在最后一个小时左右,我修改了文件
A
ATest
B
BTest
Run Code Online (Sandbox Code Playgroud)
为了确保我的提交消息与实际更改对齐A
,使用描述进行提交.不幸的是,我没有参与ATest
该提交.
与此同时,仍然没有承诺B
和BTest
.
在这一点上,最好的方法是什么?我想要:
Wil*_*ell 83
要将新文件添加到上一次提交:
$ git add new-file
$ git commit --amend
Run Code Online (Sandbox Code Playgroud)
ama*_*loy 40
这是一个有趣的流程图1,这也非常方便:它为原始问题和修改后的"如果它不是最后一次提交会怎样?"提供了正确的建议.题.
1来自http://justinhileman.info/article/git-pretty/
小智 7
将文件添加到上一个提交
如果您已经推送了正在处理的分支,请首先查看手册页。请特别注意:
对其他人基于其工作的分支重新建立基础(或进行任何其他形式的重写)是一个坏主意:下游的任何人都必须手动修复其历史记录。
但是,如果您尚未推动分支机构,请准备进入危险区域。
查找提交哈希
首先,您需要知道要添加到的提交的提交哈希。这由表示git log
。您实际上要在要添加的提交之前指定提交。(您可以将其视为要更改的提交切片的起始索引。)您可以通过运行来确保拥有正确的提交git log HEAD~n
。其中“ n”是整数,您可以递增直到拥有正确的提交。或者您可以指望,不是真的。
但是,如果您确实数了,至少要确认您有正确的提交git log HEAD~5
或任何数的提交。您应该不会看到要添加到的提交。
危险,嘿
现在您可以运行了git rebase -i HEAD~5
。或无论您的提交哈希是什么。这将显示您喜欢的文本编辑器和一个文件进行编辑。该文件是rebase命令的待办事项列表。文件中的注释告诉您可以选择哪些选项。只需找到要添加的提交的行,然后在该行上将“ pick”更改为“ edit”。现在保存并关闭文件。
一旦达到您告诉它进行编辑的提交,重新设置就会停止。运行git status
以查看其提供的其他信息。暂存文件以使用git add .
或其他文件名添加到提交中。
然后,执行git commit --amend
。这将修改您选择编辑的提交。
最后,运行git rebase --continue
。
如有疑问,在Linux上,您可以通读man git-rebase
或的文档输出来了解更多信息git --help rebase
。