我有两个分支:主人和实验。它们都是分开进化而且现在非常不同。现在我准备将实验分支到我的主分支。
如果我尝试
git checkout master
git merge experiment
我得到了大量的错误。
在不丢失实验分支历史的情况下,让实验分支成为主人的最简单方法是什么。
我已经像这样
创建了一个master分支备份git checkout master
git checkout -b release_1
答案 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 --hard
,branch -M
)会起作用,但由于它们不会创建合并提交,因此您的主分支以非快速方式移动,可能会导致其他需要从此回购中获取的人头痛。一般来说,只有在未发布这些分支时,我才会说这是正确的答案。
答案 2 :(得分:2)
您可以重命名您的分支(来自实验):
git branch -M master