Git 使一个分支等于另一个分支
我有两个git分支,分支a和分支b,都是从分支主分支分离出来的 我推了一个分支。但是,我想重置分支_a上的所有更改,并将它们替换为分支_b上的更改 我可以使用恢复提交将分支a恢复到发散点,然后合并分支b,或者在分支b中重新设置分支a的基础。有没有更简单的方法?有没有办法说:“创建一个提交,使分支_a中的文件与分支_b完全相等”?我不想解决冲突。分支机构a是错误的,分支机构b是正确的。但我无法重置为分支_b,因为我已经按下了分支_a Re:“有没有更简单的方法?” 这不会因此重置。但是,您应该能够使用“我们的”合并策略将分支a覆盖为分支b,如下所示:Git 使一个分支等于另一个分支,git,git-branch,Git,Git Branch,我有两个git分支,分支a和分支b,都是从分支主分支分离出来的 我推了一个分支。但是,我想重置分支_a上的所有更改,并将它们替换为分支_b上的更改 我可以使用恢复提交将分支a恢复到发散点,然后合并分支b,或者在分支b中重新设置分支a的基础。有没有更简单的方法?有没有办法说:“创建一个提交,使分支_a中的文件与分支_b完全相等”?我不想解决冲突。分支机构a是错误的,分支机构b是正确的。但我无法重置为分支_b,因为我已经按下了分支_a Re:“有没有更简单的方法?” 这不会因此重置。但是,您应该能够
git checkout branch_b
git merge -s ours branch_a
git checkout branch_a
git merge branch_b
结果应该是您的分支a现在基本上是分支b
我是一个git新手,所以请注意,git club的第一条规则是,一旦历史被推了,你就永远不会改变它(请参阅)。如果您删除了公开的提交,您可能会搞乱其他开发人员的状态,因此他们的变更集挂起了孤立的提交,这是一个很难处理的问题 不幸的是,如果有任何常见的更改,只需应用恢复提交,然后合并分支就有问题了。根据执行分支的时间,恢复可能会撤消更改,然后可能不会重新应用这些更改 Git分支实际上只是指向提交的指针,就像标记一样,因此如果您真的想让分支a成为分支b(并且您没有其他人使用存储库),您可以使用
Git branch-D branch\u a
删除分支a,然后执行Git branch-m branch\u b branch\u a
。最后剩下的任务是清理遥控器,您可以通过以下方式完成:
git push remote :branch_a # removes branch_a
git push remote branch_a
上述方法的优点是不进行合并,并且保证不会发生冲突。只要确保没有其他人在旧分支a的基础上进行更改。如果您不希望分支a有任何更改,那么我认为除了将分支a中的所有内容恢复到分歧点,然后将分支b合并到分支a之外,没有其他方法。下面是一个简单的方法,可以从以下内容中获得:
git checkout branch_b
git reset <the common ancestor commit>
# Move the branch pointer back to the previous HEAD.
git reset --soft HEAD@{1}
git commit -m "Revert to <the common ancestor commit>"
# Update working copy to reflect the new commit.
git reset --hard
git checkout branch_a
git reset --hard branch_b
git push -f origin branch_a