问题:一个分支有好的提交与不想要的提交交织在一起。
尝试解决办法:
git revert hash5 hash8 hash9 hash23我认为这样做的目的是应用所有指定的提交,然后让我整理任何冲突。
我现在认为会发生这样的事情:
问:在向我展示任何可能的冲突之前,如何让git连续应用所有的恢复?
发布于 2013-11-27 01:02:07
健全性检查
首先,请注意,git revert按照列出它们散列的顺序恢复修补程序;您需要列出从最新到最老的散列,因为您希望在时间上进行倒退。所以,我要叫你的哈希
<hash1> ... <hashN><hash1>比<hash2>老..。比<hashN>还老。所以,确定你在做什么
git revert <hashN> ... <hash1>首先!
易解
第二,假设您已经按照正确的顺序恢复它们,请尝试--no-commit选项:
git revert --no-commit <hashN> ... <hash1>更多涉及的解决方案
第三,如果简单的解决方案不能很好地工作,但是您想要还原的提交确实是有意义的(如果不是,我看不出有多大希望),那么尝试如下:在您想要还原的四个提交中构建一个大提交,然后恢复大提交。
big-commit上应该有一个很大的承诺。另一个相对容易的解决方案
使用选择性重基来重新构建相关分支,就好像它从未包含不需要的提交一样:
rebuild分支,以便在其中工作:
git签出-b重建<hash1> . <hashN>的行。现在,您的rebuild分支将包含<branch you want to revert>,好像<hash1> . <hashN>从未存在过一样。如果你在这里遇到冲突,这似乎是不可避免的。
如果您需要将您的工作放在<branch you want to revert>上,并且您不能仅仅将它指向您的新rebuild分支:
git checkout <branch you want to revert>
git reset --hard rebuild(例如,因为您已经公开推出了它),那么您可以将这些差异作为一个补丁应用于<branch you want to revert>:
git co <branch you want to revert>
git diff <branch you want to revert> rebuild | patchhttps://stackoverflow.com/questions/20229739
复制相似问题