操作提交记录
- 修改最近的提交记录
- 只修改最近的提交记录的注解
- 修改过去的提交记录
- 只修改过去提交记录的注解
- 中途停止rebase
- 查看HEAD的移动历史
- 查看分支前面的移动历史记录
- 放弃最近的提交
- 放弃rebase
- 取消最近的reset
- 移动弄错分支的提交
- 查找包含特定注解的提交
修改最近的提交记录
$ git commit --amend
选择--amend选项提交,就可以覆盖现在的分支最前面的提交。
只修改最近的提交记录的注解
$ git commit --amend
在索引里没有注册文件的状态下,选择--amend选项以重新提交,将会显示填写注解的画面,请修改注解。
修改过去的提交记录
$ git rebase -i <commit>
如果指定提交之后再次指定提交,就会显示提交清单。请在清单里找出要修改的提交,将该行的 “pick” 改成 “edit”,之后保存并退出。
接着,编辑要修改的文件,保存文件之后指定--amend选项,以执行提交。
$ git commit --amend
最后,指定--continue选项以执行rebase。
$ git rebase --continue
只修改过去提交记录的注解
$ git rebase -i <commit>
如果指定提交之后再次指定提交,就会显示提交清单。请在清单里找出要修改的提交,将该行的 “pick” 改成 “edit”,之后保存并退出。
接着,指定--amend选项执行提交。将会显示填写注解的画面,请修改注解。
$ git commit --amend
最后,指定--continue选项以执行rebase。
$ git rebase --continue
中途停止rebase
$ git rebase --abort
指定--abort选项并执行rebase命令后,可以取消rebase。
查看HEAD的移动历史
$ git reflog
执行reflog命令,就可以查看HEAD指向过去的提交清单。
08084a5 HEAD@{0}: commit: 添加pull的说明
99daed2 HEAD@{1}: commit: 添加commit的说明
48eec1d HEAD@{2}: checkout: moving from master to issue1
326fc9f HEAD@{3}: commit: 添加add的说明
48eec1d HEAD@{4}: commit (initial): first commit
这里会显示已删除的提交和藉着rebase等所汇集的提交。
查看分支前面的移动历史记录
$ git reflog <ref>
在<ref> 指定分支名称,并执行reflog命令,过去在分支前面指向的提交清单将以下面的方式显示。
445e0ae issue1@{0}: commit (merge): Merge branch 'master' into issue1
1c904bd issue1@{1}: commit (amend): 添加pull的说明
08084a5 issue1@{2}: commit: 添加pull的说明
99daed2 issue1@{3}: commit: 添加commit的说明
48eec1d issue1@{4}: branch: Created from 48eec1ddf73a7fb508ef664efd6b3d873631742f
这里会显示已删除的提交和藉着rebase等所汇集的提交。
放弃最近的提交
$ git reset --hard HEAD~
放弃rebase
$ git reset --hard <commit>
首先使用reflog命令查找rebase以前的提交,确认提交的信号值或「HEAD@{数字}」值。以下的历史记录是update2提交之后,rebase命令执行2个提交之后所汇集的历史记录。71bdfbd以及HEAD@{4}是任意的提交。
a51f8d2 HEAD@{0}: rebase -i (finish): returning to refs/heads/dev
a51f8d2 HEAD@{1}: rebase -i (squash): update 1
3a273e1 HEAD@{2}: rebase -i (squash): updating HEAD
f55ef69 HEAD@{3}: checkout: moving from dev to f55ef69
71bdfbd HEAD@{4}: commit: update 2
f55ef69 HEAD@{5}: commit (amend): update 1
查找出来的信号值或「HEAD@{数字}」值以<commit>指令,然后执行reset命令。
把被rebase移动过的分支前面的位置恢复到提交rebase之前的位置,由此取消rebase。
取消最近的reset
$ git reset --hard ORIG_HEAD
ORIG_HEAD是指reset之前的提交,指定之后reset。
复制提交
Back To Top查找包含特定注解的提交
$ git log --grep "<pattern>"
只显示提交记录里包含指定<pattern>文字的提交。