重新整理一堆混合的分支机构

时间:2014-10-16 05:58:58

标签: git git-rebase

在第一次询问Creating a patch in git gives some headaches并学习如何使用rebase之后,我意识到我应该将它用于其他一些事情。

我已经克隆了一个上游存储库。我已经做了一些我自己的测试和调试配置,我不打算推​​动。当上游存储库已更新时,我总是将更改合并到我的“测试”分支。现在我意识到将我的测试分支重新定位到上游/主服务器中的最新提交将使我的存储库更加清洁。

我试图将我的测试分支重新绑定到master上的最新提交,但是它遇到了许多合并冲突 - 并且似乎有很多提交需要重写。如果在许多

中出现合并冲突,那将是一个痛苦的问题

有没有办法只采取测试分支的“状态”和主分支的“状态”,并重写一个新的提交,可能会进入一个具有所有差异的“testing2”分支?

2 个答案:

答案 0 :(得分:1)

如果没有看到提交差异,我建议采摘樱桃。从最新的upstream/master创建一个新分支,然后挑选(git cherry-pick <hash>)您在自己的分支上创建的提交。

答案 1 :(得分:1)

回答你的最后一段:

  

有没有办法只采取&#34;状态&#34;测试分支和&#34;状态&#34;主分支,并重写一个新的提交,可能进入&#34; testing2&#34;有所有差异的分支?

在那里,是。 git merge --squash branch将执行合并并将所有更改放入单个提交中。您将丢失所有提交信息,包括历史记录和合并信息,因此请务必了解后果。此外,拥有单个巨大的提交很少有用。

如果两个分支共享一个共同的祖先,使用git rebase也应该有效。 Git非常聪明,可以确定哪些提交已包含在master中,哪些不包含在内,并相应地将您的历史线性化。