修改一个git rebase

时间:2012-02-14 01:31:22

标签: git

我做了git rebase master,其中涉及三个文件中的一些手动合并。在其中一个中,我错过了一个尾随换行符,导致文件末尾出现以下内容:

<<<<<<< HEAD
=======

>>>>>>> ... commit message

自然会导致PHP错误。我可以很容易地修复文件,但我不想添加错误的“修复sloppy rebase”提交。

如何将此更改修改为rebase?或者,重复一下rebase,以便我能抓住它?

2 个答案:

答案 0 :(得分:4)

这个问题基本归结为“我如何修改不是最新的提交?”。假设您没有将提交推送到任何地方,并进一步假设历史从该提交开始是线性的,这很容易。

  1. 进行您想要应用于之前提交的更改。
  2. 弄清楚您要修改的早期提交是什么。为了这些说明,我们将其称为$SHA,但您可以使用任何方法来识别此提交。
  3. 运行git commit --fixup $SHA
  4. 运行git rebase -i --autosquash $SHA^
  5. 这将为您提供一个包含提交列表的编辑器。第一次提交应该是$SHA,第二次提交应该是您的编辑,然后应该是提交的其余提交HEAD。保存并关闭此编辑器。 Git现在将执行交互式rebase,将您的更改应用于您想要修改的提交。


    您可以使用另一种解决方案,这种解决方案更具手动性,但无需交互式rebase即可使用。基本上,您可以直接签出要修改的提交(生成一个分离的头),进行更改,运行git commit --amend,然后在新修改的提交之上重新绑定分支。您可能实际上更喜欢这种风格,因为它对您正在做的事情更加明确,但交互式rebase版本的好处是您可以使用交互式rebase做更多事情。例如,您可以重新排序提交,将多个提交压缩在一起,删除提交,重新提交提交等。您还可以使用--fixup--squash标记git commit来记录您希望执行的这些操作,而无需立即实际执行rebase,然后您可以返回并执行一个大的交互操作你完成后会变色。

答案 1 :(得分:0)

您可以进行更改,然后git commit --amend