git reflog
使用git reflog查看:
HEAD@{0}: HEAD~1: updating HEAD
63ee781 HEAD@{1}: commit: test3:q
这是最近操作的一次,如果想要回退。
可以使用git reset --hard 63ee781
即撤销这一次操作。
git merge
fast-forward
no-fast-forward
git rebase
交互式rebase
在push到远端之前,本地可能有多个commit,当我们需要修改指定的某几个commit,或者调整commit的顺序时,就可以使用交互式rebase的功能了。
交互式rebase实例
需求:
本地写了5个commit,push的时候发现需要对commit-1 进行修改。
![image.png]
分析
如果是对commit-5进行修改, 使用git commit --amend即可。但是如何在不影响 commit 2,commit3, commit4, comit5的情况下,对commit1进行修改呢?
步骤
- 1.查看commit-111的 commitId:30814227
将HEAD移动到需要修改的commit上:
执行命令:
git rebase -interactive 30814227
- 2.可以看到 30814227之前的"pick",改为"edit"。
看sourceTree的结构,HEAD指向已移动
![image.png]
- 增加修改的内容,修改一些代码,git add, git commit --amend
然后执行
- 增加修改的内容,修改一些代码,git add, git commit --amend
g rebase --continue
![image.png]
成功,其commitId也发生了变化,变成了 b7c856e7
![image.png]
git reset
git revert
git cherry-pick
git fetch
git pull
git dif >, git apply patch
参考文献
http://gitbook.liuhui998.com/4_3.html
https://www.jianshu.com/p/81cb0737f36f