如何合并git中不同的分支



所有东西都在主分支上。
我们做了一个改变。它不起作用。
我们退回了三次提交,创建了一个分支来测试另一个想法。
那起作用了。
现在我们希望分支是master。
我想我们应该合并它们,但是我们在master上的三个提交中不需要任何东西。如何继续?

master分支硬复位到另一个分支:

# from master
git reset --hard other

或者,如果您知道other分支头部的SHA-1哈希值,您也可以硬重置为:

# from master
git reset --hard 1a2b3c4d
git checkout master
git reset --hard @~3
git rebase <new branch that works>

HTH

如果您想从版本控制历史记录中清除失败的尝试,采用这个解决方案。但是,如果您想保留提交历史,或者您只是不能强制推送到主分支,您可以执行以下操作,这将为revertmerge创建一个额外的提交:

git checkout master 
git revert HEAD~3 
git merge your_other_branch

您需要编辑合并策略

git checkout new_branch
git merge --strategy=recursive -Xours master
git checkout master
git merge new_branch 

或者,您可以从主分支回滚更改,然后将新分支重新基于主分支。

编辑:要添加到最后一个语句,命令将是:

git checkout master
git revert HEAD~3
git rebase new_branch

最新更新