Git 提交历史记录命令
修改之前的提交和消息
$ git commit --amend
添加--amend
选项来覆盖您正在处理的分支的最新提交。
当索引中没有文件时,您可以通过添加--amend
选项重新提交之前的提交,系 统将提示您编辑现有的提交消息。
请参考:
修改并移动过去的提交和消息
$ git rebase -i <commit>
添加提交哈希,将列出直到最新提交的所有提交的列表。找到您要修改的提交,并将该行从pick
更改为edit
,然后保存并退出。
接下来,添加--amend
选项来提交。将显示用于添加消息的界面。修改消息。
$ git commit --amend
最后,添加--continue
选项来运行 rebase。
$ git rebase --continue
请参考:
退出变基
$ git rebase --abort
通过添加--abort
选项,您可以退出变基操作。
显示参考日志
$ git reflog
reflog 命令允许您查看 HEAD 过去用来指示的提交列表。
08084a5 HEAD@{0}: commit: append description of the pull command
99daed2 HEAD@{1}: commit: append description of the commit command
48eec1d HEAD@{2}: checkout: moving from main to issue1
326fc9f HEAD@{3}: commit: append description of the add command
48eec1d HEAD@{4}: commit (initial): first commit
将显示由 rebase 收集的已删除和成功的提交。
显示分支提示的参考日志
$ git reflog <ref>
这将显示每次提示的提交列表 <ref>
已经改变,类似于下面。
445e0ae issue1@{0}: commit (merge): Merge branch 'main' into issue1
1c904bd issue1@{1}: commit (amend): modify description of the pull command
08084a5 issue1@{2}: commit: append description of the pull command
99daed2 issue1@{3}: commit: append description of the commit command
48eec1d issue1@{4}: branch: Created from 48eec1ddf73a7fb508ef664efd6b3d873631742f
我们可以看到已删除和现有提交的 rebase 历史记录。
移除以前的提交
$ git reset --hard HEAD~
请参考:
重置变基
$ git reset --hard <commit>
使用 reflog 命令在变基之前查看提交。确定提交哈希值,或者在变基前发生提交的 [HEAD@{number}]
的值。在此示例中,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
在运行重置命令时,将哈希值(71bdfbd
和 HEAD@{4}
)添加到<commit>
。
分支的头的位置现在将移动到执行变基之前的提交。现在分支的状态将与执行变基之前的状态相同。
取消之前的重置
$ git reset --hard ORIG_HEAD
ORIG_HEAD
指的是重置发生之前的提交。您可以使用 reset to ORIG_HEAD
恢复之前的重置。
从另一个分支复制提交
$ git cherry-pick "<commit>"
由其哈希标识的提交将被复制到当前分支。
请参考:
搜索提交消息
$ git log --grep "<pattern>"
显示用 <pattern>
指定的文本的提交。