首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改git rebase

修改git rebase
EN

Stack Overflow用户
提问于 2012-02-14 09:31:22
回答 2查看 5.7K关注 0票数 2

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

代码语言:javascript
复制
<<<<<<< HEAD
=======

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

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

如何将此更改修改为rebase?或者,重复rebase,这样我就可以捕捉到它了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-14 09:44:22

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

  1. 进行要应用于早期提交的更改。
  2. 确定要修改的早期提交是什么。出于这些说明的目的,我们将其称为$SHA,但您可以使用任何您想要标识此提交的方法。
  3. 运行git commit --fixup $SHA.
  4. Run git rebase -i --autosquash $SHA^

这将为您提供一个带有提交列表的编辑器。第一次提交应该是$SHA,第二次应该是您的编辑,接下来应该是对HEAD的其余提交。保存并关闭此编辑器。Git现在将执行交互式的rebase,将您的更改应用于您想要修改的提交。

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

票数 4
EN

Stack Overflow用户

发布于 2012-02-14 09:37:22

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9270537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档