一、回退
1.本地回退(未add)
git checkout .
2.暂存区回退(已add,未commit)
git reset HEAD . :这步执行过之后,修改不在暂存区了,只保留在工作区,
git checkout . :用这个命令,撤回工作区的修改就可以了
3.本地仓库回退(已commit,未push)
git reset --hard HEAD^ :这执行完,本地工作区,暂存区,仓库全部回退到上一次提交
4.远程仓库回退 (已push)
git revert commitID :这执行完,本地工作区,暂存区,仓库全部回退到上一次提交,再push到远程仓库
会产生一个新的commit,不会清空以前的
二、储藏
git stash : 暂时储藏当前修改
git stash list:查看暂存
git stash pop :恢复暂存,并删除
三、reset和revert(回退的都是本地仓库)
1.git reset commitID
reset
2. git revert commitID
同样是修改本地仓库分支,git revert会生成一个新的
revert回退的时候,同步远端分支的话,就强推git push -f origin commitID
四、清理版本库
gc 指的是垃圾回收,可用于清理版本库,移除所有不属于当前分支的提交对象
五、恢复已删除分支
git reflog:git 会记录我们在每次提交中对分支指针所做的所有修改。如果你想恢复某个不小心删除的分支,这是非常有用的工具。
reflog然后 git branch newBranch HEAD@{6} ,选择你想要恢复的那个HEAD。然后就能在本地分支找到newBranch的分支,就是你恢复回来的分支了。
六、取消合并
git reset --merge
七、快进合并(Fast-forward)
两个合并分支的关系属于,纯增量,那么head的指针直接移动一下就可以,不需要产生合并提交了,叫快进合并。
快进合并的优点是它能简化版本库的历史记录并使其保持线性发展。而缺点则是我们不能根据已经合并过的历史记录来看版本库的这一发展。
正是因为它存在这样的缺点,我们才需要在工作流中使用--no-ff 选项,以强制其产生一次新的提交。
网友评论