git的使用
根据一个例子来进行理解大致整个提交的流程:(Linux环境下)
先创建一个目录:mkdir MyProject
然后进入到该目录:cd MyProject
初始化该目录(创建仓库):git init(这个时候,会在MyProject目录下存在一个隐藏文件.git,Git就是通过该文件来进行文件的跟踪)
在该目录下写自己需要的文件:touch README.md
将文件放到暂存区:git add README.md
将文件提交到Git仓库:git commit -m "add a readme file"
查看文件的状态:git status
只同步当前分支的代码:git pull
Untracked files(未跟踪的文件):指的就是那些在工作区新添加的文件。
将最后一次提交到Git仓库的文件恢复到暂存区域:git reset HEAD <file> ...
如果自己在工作区新添加了一个文件,并执行操作:
git add file
那么再执行:
git reset HEAD
那么效果就是撤销了:git add file的这一步操作
当我们刚把一个文件保存到暂存区域,然后又在工作区将文件的内容进行了修改,此时执行:
git checkout -- <file>...
那么执行的效果是:Git会用暂存区域的文件将我们工作区的文件覆盖
在工作区域:显示的颜色是红色;在暂存区域:显示的颜色是绿色
查看提交的历史记录:git log
git log --decorate:显示HEAD的指向
git log --decorate --oneline:一行只显示一个快照
git log --decorate --oneline --graph --all:以图像化的方式显示所有分支,并显示HEAD的指向,一行只显示一个
stage:驿站 repository:仓库
git reset --soft HEAD~
移动HEAD的指向,将其指向上一个快照
git reset --mixed HEAD~
移动HEAD的指向,将其指向上一个快照;然后将HEAD移动后的快照回滚到暂存区域
git reset --hard HEAD~
移动HEAD的指向,将其指向上一个快照;然后将HEAD移动后的快照回滚到暂存区域;最后将暂存区域的文件还原到工作目录
将快照回滚到指定版本(id用了哈希算法。。。根据指定的id可以往前滚,也可以往后滚):git reset id(这个id就是git log之后显示结果中的那些乱七八糟的数字)
比较暂存区域与工作目录:git diff
创建分支:git branch 分支名
切换分支:git checkout 分支名
repo sync #同步代码(使工作区的代码和server上的代码相同)
HEAD #表示当前版本,HEAD~:表示上一个版本,HEAD~~:表示上上个版本,HEAD~23:表示往上23个版本
git stash save 将修改的代码保存
git stash apply 将修改的代码拿出来
git branch --all | grep 字段 查找想要的分支
git checkout -b 任意名字(这是本地的分支,最好和服务器的名字对应,便于查看理解) origin/test/func 建立本地分支和远程分支对应
git checkout 分支名 切替到对应的分支
===================================================================
将某个仓库的代码回退到指定的版本:
git reset --hard 版本号
只想更新某个指定的提交:
cherry pick下来就可以
将git add之后的代码回退到本地:
git reset 或者 git restore --staged ./
===================================================================
sudo git difftool