我做了一个 git rebase master
,它涉及到三个文件中的一些手动 merge 。在其中一个中,我错过了尾随的换行符,导致文件末尾出现以下内容:
<<<<<<< HEAD
=======
>>>>>>> ... commit message
这自然会导致 PHP 错误。我可以很容易地修复文件,但我不想添加错误的“修复草率 rebase”提交。
我如何修改对 rebase 的更改?或者,重复 rebase 以便我可以捕获它?
最佳答案
这个问题基本上可以归结为“我如何修改不是最新的提交?”。假设您没有将提交推送到任何地方,并进一步假设历史从该提交开始是线性的,这很容易。
- 做出您想要应用到您之前提交的更改。
- 弄清楚您要修改的早期提交是什么。为了这些说明,我们将其称为
$SHA
,但您可以使用任何您想要识别此提交的方式。 - 运行
git commit --fixup $SHA
。 - 运行
git rebase -i --autosquash $SHA^
这将为您提供一个带有提交列表的编辑器。第一个提交应该是 $SHA
,第二个应该是您的编辑,然后是 HEAD
之前的其余提交。保存并关闭这个编辑器。 Git 现在将进行交互式 rebase ,将您的更改应用到您想要修改的提交。
您可以使用另一种解决方案,它需要更多的手动操作,但无需交互式 rebase 即可工作。基本上,您可以直接 checkout 要修改的提交(产生一个分离的头),进行更改,运行 git commit --amend
,然后将分支 rebase 到新修改的提交之上.您实际上可能更喜欢这种风格,因为它更明确地说明您在做什么,但是交互式 rebase 版本的好处是您可以使用交互式 rebase 做更多的事情。例如,您可以对提交重新排序、将多个提交压缩在一起、删除提交、改写提交等。您还可以使用 --fixup
和 --squash
标志来 git commit
来记录您希望执行的这些操作,而无需实际执行立即 rebase ,然后您可以返回并在完成后进行一次大型交互式 rebase 。
关于git - 修改一个git rebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9270537/