我已经在我的仓库中编辑了一些文件并推送它们。
经过其他一些工作,我注意到我保留了一行评论。
所以,我不想为它创建一个新的提交,我想在上一次提交中更改它(不是最后一次提交)。
我认为我可以使用提交 ID,但我不知道 Git 如何或可能不容忍此功能。
问问题
5955 次
2 回答
6
您可以在交互模式下进行变基:
git rebase -i HEAD~10
Git 将提示您提交提交列表,最旧的提交列表首先显示:
...
pick ab89k22 Old commit
pick ml9826x Another old commit
pick xke82ml This is the commit you want to edit
pick aow82md Here is your latest commit
找到您要编辑的提交,然后更改pick
为edit
:
edit xke82ml This is the commit you want to edit
然后保存文件并退出。Git 现在将开始 rebase 并在您要编辑的提交处停止,允许您进行更改。完成这些更改后,您可以键入
git add path/to/file
对于您修改的每个文件,然后键入
git rebase --continue
完成变基。
请注意,在本地分支上编辑此提交时,您已经有效地重写了历史记录。这意味着当你推送到远程时,你将不得不强制分支出来,--force
在你的git push
命令中使用:
git push origin master --force
请注意,重写远程历史记录可能很危险,具体取决于谁也与您共享此分支。
如果您不想重写远程历史记录,那么更安全的选择是向您的分支添加新的提交。您还可以使用 删除有问题的提交git revert
,然后添加要保留的更改。
于 2016-01-18T10:01:47.020 回答
3
不!
正如蒂姆指出的那样:重写远程历史是危险的。
只需接受您犯了一个错误(并且在推送之前没有彻底测试您的代码),修复您的错误并使用该消息进行新的提交
amend <COMMIT_HASH_YOU_WANT_TO_FIX>
如果您使用的是半体面的历史查看器,它将生成一个链接,<COMMIT_HASH_YOU_WANT_TO_FIX>
以便您可以轻松跳转到错误提交。
于 2016-01-18T10:34:11.717 回答