如何用实验分支替换master分支

时间:2010-11-09 13:43:22

标签: git

我有两个分支:主人和实验。它们都是分开进化而且现在非常不同。现在我准备将实验分支到我的主分支。

如果我尝试

git checkout master
git merge experiment

我得到了大量的错误。

在不丢失实验分支历史的情况下,让实验分支成为主人的最简单方法是什么。

我已经像这样

创建了一个master分支备份
git checkout master
git checkout -b release_1

3 个答案:

答案 0 :(得分:21)

假设这些是私有分支(即没有其他人正在处理它们),您可以将master设置为experiment,如下所示:

git checkout master
git reset --hard experiment

如果这些是公共分支,您可能希望合并并解决冲突,如Jefromi explains

答案 1 :(得分:12)

这里有一些可能性,具体取决于“替换”的含义。你几乎肯定采取正确的方法开始 - 合并通常是要走的路。你看到的“错误”是合并冲突,大概是。如果您确定无论何时发生冲突,您都希望使用实验分支中的版本,您可以这样做:

# resolve conflicts by taking the version from experimental
# non-conflicting content is merged normally
git checkout master
git merge -Xtheirs experimental

如果你想在实验中使用所有的版本,而不仅仅是存在冲突的地方,那么有很多方法(实际上没有合并策略)。最简单的:

# do the merge the other way around
git checkout experimental
git merge -s ours master
git checkout master
git merge experimental

# do the merge the right way
git checkout master
git merge --no-commit experimental  # merge, but stop before committing
git checkout experimental .         # check out content, but don't switch branch
git commit                          # commit the merge

其他人建议的方式(reset --hardbranch -M)会起作用,但由于它们不会创建合并提交,因此您的主分支以非快速方式移动,可能会导致其他需要从此回购中获取的人头痛。一般来说,只有在未发布这些分支时,我才会说这是正确的答案。

答案 2 :(得分:2)

您可以重命名您的分支(来自实验): git branch -M master