将分支合并到主分支,并包括所有更改吗?
问题的出现原因是希望将一个分支的所有更改合并到主分支(master)中。解决方法有以下几种:
1. 使用ours
合并策略,保留历史记录:
git checkout branch git merge -s ours master
2. 如果不关心主分支(master)的历史记录,可以进行重置:
git checkout master git reset --hard branch
(这将丢弃所有本地更改,并使主分支的提交无法访问!)
3. 如果主分支(master)中没有与分支中不同的提交,可以将主分支快进到分支:
git checkout branch git merge master # 或者 `git merge --ff-only master` 只允许快进合并
最后一个例子将主分支(master)合并到分支中,而不是相反的方向,这是符合OP的要求的。同时,应该使用--ff-only
标志。
以上是解决将一个分支的所有更改合并到主分支(master)的问题的方法。
问题的出现原因:
这个问题的出现是因为需要将一个分支的所有更改合并到主分支(master),并且希望最终的主分支包含所有这些更改。
解决方法:
使用git reset --hard
命令,加上你希望成为新主分支头部的提交的ID,这应该是解决方法。
需要注意的是,使用这种方法会丢失主分支上的所有与该分支不同的提交(你可以找回这些提交,但它们将不再属于一个分支)。
参考链接:
更多关于git reset --hard
命令的信息,请参考http://git-scm.com/2011/07/11/reset.html。
另外,可以在How to replace master branch in git, entirely, from another branch?中找到解决方案。根据所需的结果,我提到的重置方法可能是解决方法之一。
备注:
回答中提到的问题有些不清楚,"clone of the branch"技术上意味着一个单独的副本。在这里,使用克隆这个词是一个不合适的选择。我试图表达的是分支的一个确切版本。