我已经编辑了代码库中的一些文件并将它们推送到了远程仓库。
在完成了其他工作之后,我注意到有一行代码被注释掉了。
因此,我不想为此创建新的提交记录,并希望能够在之前的提交记录中修改它(而不是最后一个提交记录)。
我认为可以使用提交记录的ID来实现这个目标,但我不知道如何操作,或者Git是否支持这个功能。
我已经编辑了代码库中的一些文件并将它们推送到了远程仓库。
在完成了其他工作之后,我注意到有一行代码被注释掉了。
因此,我不想为此创建新的提交记录,并希望能够在之前的提交记录中修改它(而不是最后一个提交记录)。
我认为可以使用提交记录的ID来实现这个目标,但我不知道如何操作,或者Git是否支持这个功能。
git rebase -i HEAD~10
...
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
删除相关提交,然后添加您想要保留的更改。
不要这样做!
正如Tim所指出的那样:重写远程历史记录是危险的。
只需承认您犯了错误(在推送之前没有充分测试代码),修复错误并创建一个新的提交,带有消息
amend <COMMIT_HASH_YOU_WANT_TO_FIX>
如果你使用的是一个半靠谱的历史记录查看工具,它将会生成一个链接来代替<COMMIT_HASH_YOU_WANT_TO_FIX>
,这样你就可以轻松跳转到有误的提交中。
git push
命令时,加上-f
标志。 - 1615903