2012-02-03 53 views
1

假设我有一个本地回购与原产地完全保持一致。安全地使用各种远程提交重新绑定新的本地分支?

它是安全的,从一个特定的SHA创建一个新的分支,然后做一切我想我对其他分支/ SHA的新分支的垫底,其存在的来历?

git checkout -b merging_some_commits bfd70a83f5bf3f7fd44422233a82751535428cbd 

git rebase --onto some_other_branch 02979b4e34809d53e5071501046f59ad5c 

git checkout some_other_branch 

git merge mergin_some_commits 

git push origin some_other_branch 

更新:基本上,我想挑樱桃02979b... - bfd70a83...some_other_branch02979b...bfd70a83...的祖先既没有与some_other_branch共享最近的历史记录。假设在02979b...之前有10-15次提交给我不想要的共享共同祖先(还)。最终这10-15次提交也需要合并。

+1

这将有助于了解两个SHA的含义是什么02979b4e34809d53e5071501046f59ad5c bfd70a83f5bf3f7fd44422233a82751535428cbd的祖先?并且是some_other_branch的祖先? – avh 2012-02-03 21:16:06

+0

更新...我假设,如果你甚至不得不问,那么我不想这样做。 – drstevens 2012-02-03 21:21:53

回答

2

是的,你有什么有看上去很好,而且它应该做你描述你在更新想要的东西。正如@haydenmuhi所描述的,几乎任何东西在您的本地存储库中都是“安全的”。当你推动时,所有重要的是你正在推动的分支上的提交 - 他们来自哪里以及你拥有的任何其他分支都不会产生影响。

至于后来合并其他10-15承诺,你应该能够做到这一点,将来就好要么简单地合并02979bbfd70a83,或重订some_other_branch..02979bsome_other_branch..02979b。如果在合并之前还需要一段时间,你现在可能需要将它们重新绑定到some_other_branch上以帮助它们保持最新状态。

+0

谢谢,我不能在'029'之前把所有东西都拿走,因为它会让其他人重构。如果可以的话,我会只用'合并'。 – drstevens 2012-02-03 21:43:59

4

如果一个提交是本地的,只有本地的,你可以做任何你想要的。只要您从未将该承诺推送到远程回购,那么以任何方式进行修改都是公平的,包括重新分配。无论你在底线上放置什么都没有关系,因为小孩提交不会影响他们的祖先。

+0

我执行了rebase并且没有创建新的提交。实际上,现在的提交在smartgit中查看历史时现在显示两次(仅用于查看和区分历史记录)。合并到merge_come_commits中将创建一个新的提交。 – drstevens 2012-02-03 21:31:44

+0

感谢您的回复。我会将你的标记标记为答案,但它仍然部分凌驾于我的头上。 – drstevens 2012-02-03 21:45:16

相关问题