我做了git rebase master
,其中涉及三个文件中的一些手动合并。在其中一个中,我错过了一个尾随换行符,导致文件末尾出现以下内容:
<<<<<<< HEAD
=======
>>>>>>> ... commit message
自然会导致PHP错误。我可以很容易地修复文件,但我不想添加错误的“修复sloppy rebase”提交。
如何将此更改修改为rebase?或者,重复一下rebase,以便我能抓住它?
答案 0 :(得分:4)
这个问题基本归结为“我如何修改不是最新的提交?”。假设您没有将提交推送到任何地方,并进一步假设历史从该提交开始是线性的,这很容易。
$SHA
,但您可以使用任何方法来识别此提交。git commit --fixup $SHA
。git rebase -i --autosquash $SHA^
这将为您提供一个包含提交列表的编辑器。第一次提交应该是$SHA
,第二次提交应该是您的编辑,然后应该是提交的其余提交HEAD
。保存并关闭此编辑器。 Git现在将执行交互式rebase,将您的更改应用于您想要修改的提交。
您可以使用另一种解决方案,这种解决方案更具手动性,但无需交互式rebase即可使用。基本上,您可以直接签出要修改的提交(生成一个分离的头),进行更改,运行git commit --amend
,然后在新修改的提交之上重新绑定分支。您可能实际上更喜欢这种风格,因为它对您正在做的事情更加明确,但交互式rebase版本的好处是您可以使用交互式rebase做更多事情。例如,您可以重新排序提交,将多个提交压缩在一起,删除提交,重新提交提交等。您还可以使用--fixup
和--squash
标记git commit
来记录您希望执行的这些操作,而无需立即实际执行rebase,然后您可以返回并执行一个大的交互操作你完成后会变色。
答案 1 :(得分:0)
您可以进行更改,然后git commit --amend
。