Mar*_*tin 5 git git-merge git-rebase
我需要一起“挤压”一些提交。通常我习惯做这样的事情:
git rebase -i HEAD~10
但是,现在我收到以下错误:
错误:无法应用 2009972... 修复
解决此问题后,运行“git rebase --continue”。如果您更喜欢跳过此补丁,请改为运行“git rebase --skip”。要检查原始分支并停止变基,请运行“git rebase --abort”。
如您所见git,我假装我解决了所有冲突。现在,我不想也无法解决任何冲突。
我需要的是这样一种方式git:“嘿,我不想合并任何东西:只需获取此分支中所有跟踪的文件 - 因为它们出现在最后一次提交/HEAD 中,丢弃/删除之前的前 10 次提交最新的,最后“应用”这些文件作为新的提交”:
例如,假设这是所有提交哈希的列表:
1-2-3-4-5-6-7-8-9-10-11-12,其中 HEAD 指向 12。
我想压缩/删除/无论这个操作被称为包含 2-11 的所有提交,以便 a 后的最终结果git log给出:
1-12
其中操作前后的文件必须相同。
获得我需要的东西的命令是什么?
最简单的解决方案(在中止当前 rebase 之后)是:
$ git reset --soft HEAD~10
Run Code Online (Sandbox Code Playgroud)
现在,您的 HEAD 已将 10 个提交移回,但您的文件都没有更改:它们都将显示为要提交的新更改。
然后,只需像往常一样提交它们。
这种方法的缺点是,当您编写新提交消息时,您无法访问中间提交消息。
另一种方法是rebase -i通过指定他们的冲突解决策略来使原始命令为您工作:
$ git rebase -i -s theirs HEAD~10
Run Code Online (Sandbox Code Playgroud)
知道您是如何首先设法解决冲突会很有趣,但rebase -i通常应该干净利落地应用。除非这十次提交中的一些本身是合并的?
| 归档时间: |
|
| 查看次数: |
2267 次 |
| 最近记录: |