我需要一起“压制”一些提交。通常我习惯这样做:
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的所有提交,以便git log
之后的最终结果给出:
1-12
其中操作前后的文件必须相同。
获得我需要的命令是什么?
答案 0 :(得分:3)
最简单的解决方案(在中止当前的rebase之后)是:
$ git reset --soft HEAD~10
现在,您的HEAD已经移回了十次提交,但没有一个文件发生变化:它们都会显示为要提交的新更改。
然后,正常提交它们。
这种方法的缺点是,当您编写新的提交消息时,您将无法访问中间提交消息。
另一种方法是通过指定冲突解决策略他们的来使原始rebase -i
命令为您工作:
$ git rebase -i -s theirs HEAD~10
知道你是如何设法在第一时间发生冲突会很有趣,rebase -i
通常应该干净利落地应用。除非这十个提交中的一些本身是合并的?