我发现通过git rebase -i
重新排序提交在处理删除的文件时可能不会产生相同的最终结果树 - 并且可能没有警告或错误消息。
采取以下提交顺序
A - Add foo1 B - Add foo2 C - Remove foo2, Add Foo3
使用git rebase -i
重新排序从A-B-C到A-C-B的提交会导致fAD2出现在HEAD中。
如果重新排序会改变最终生成的树,有没有办法重新排序那些咆哮的提交?
我认为git rebase
在内部使用git am
来应用补丁。我没有看到git am
的任何相关参数可用于在删除不存在的文件时强制失败,这是我认为需要的。我是否需要修补git源代码才能获得我想要的内容?
答案 0 :(得分:0)
你是否让文件的内容有很大不同?如果它们太相似,可以看作是一个举动。当您尝试应用修补程序删除不存在的文件时,您应该因冲突而停止。
希望这有帮助。
答案 1 :(得分:0)
您可以重新定位,比较结果,然后可能重置为旧状态。
的简单组合git stash save --include-untracked
进入清洁状态git rev-parse HEAD
获取当前提交的哈希值git rebase
做实际工作git checkout the_previously_saved_hash .
在重新定位之前恢复状态git clean -fd
摆脱所有多余的文件git commit -m "Undoing the changes introduces by rebase."
如果rebase没有引入任何更改,则可能会失败(可以忽略此故障)git stash pop
重新介绍被污染的"污染" 应该......我想我会尽快制作一个这样的剧本,因为它也是我需要的东西。