由于(非常奇怪)的情况,我现在有一个2根git仓库。我想删除导致第二个根出现的合并。从技术上讲,这些“根”中的每一个都是父项为0的提交。Rebase合并从未发生
我想摆脱导致两个根的合并。
我用git樱桃采摘,并没有工作,它似乎不适用任何更改。
为了清楚我想要一个',b'和c'全部消失(它们是a,b和c由不良rebase引起的破坏副本)。
a <- b <- c \ /g <- h \ d -f origin/master a' <- b' <- c'/ \ i <- j /
由于(非常奇怪)的情况,我现在有一个2根git仓库。我想删除导致第二个根出现的合并。从技术上讲,这些“根”中的每一个都是父项为0的提交。Rebase合并从未发生
我想摆脱导致两个根的合并。
我用git樱桃采摘,并没有工作,它似乎不适用任何更改。
为了清楚我想要一个',b'和c'全部消失(它们是a,b和c由不良rebase引起的破坏副本)。
a <- b <- c \ /g <- h \ d -f origin/master a' <- b' <- c'/ \ i <- j /
如果通信或其他人的工作已经基于关闭任何在它的祖先d
是一个问题,只考虑与两个根的生活,如果你喜欢的提交,其余他们几乎后果无论如何。
你想转储合并的效果,或只是祖先?
如果提交d
包含要保存更改,或包含任何改动,
echo `git rev-parse $d $d^` >.git/info/grafts
git filter-branch -- --all
rm .git/info/grafts
将做到这一点。
如果提交d
包含更改,您不想保留,那么你可以变基合并废除
git rebase -p --onto $d^ $d..origin/master
的$
的是shell变量语法,替代你喜欢的任何命名参考提交。
像这样的任何历史重写都会对其他提交的重构造成影响(即可以跟踪重写的重写)。因此,之后,您需要强制推送origin/master
,并让其他人重新提取并进行必要的重新绑定,如果他们自己的作品基于自c
以来的任何提交。
键盘到编辑框的警告,但我相信这些是正确的。 – jthill
我试过了,我得到了“以前的樱桃选择现在是空的,可能是由于解决冲突。” – Snark
你指的是什么樱桃? Afaik既不会过滤分支也不会分配这个消息。 – jthill