我有两个git分支,branch_a和branch_b,两者都是分支主机.
我推了branch_a.但是,我想重置branch_a上的所有更改并将它们交换为branch_b上的更改.
我可以使用reversion提交将branch_a恢复到分歧点,然后在branch_b中合并branch_b或rebase branch_a.有更简单的方法吗?有没有办法说:"创建一个提交,使branch_a中的文件变得完全等于branch_b"?我不想解决冲突.branch_a是错误的,branch_b是对的.但是我无法重置为branch_b,因为我已经推送了branch_a.
如果你不想从branch_a进行任何更改,那么我认为除了将branch_a中的所有内容恢复到分歧点然后将branch_b合并到branch_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
Run Code Online (Sandbox Code Playgroud)
即使它已被推动,仍然可以将branch_a重置为与branch_b相同,但有一些警告.基本上如果分支仅由你使用,那么这样做是非常安全的,但是如果其他人也在这个分支上工作,你需要与它们协调,步骤取决于你的具体情况,所以我不能真的在这里提出一般性答案.
如果你想走那条路,这是怎么做的:
git checkout branch_a
git reset --hard branch_b
git push -f origin branch_a
Run Code Online (Sandbox Code Playgroud)
回复:“有没有更简单的方法”
这不会重置。但是您应该能够使用“我们的”合并策略来像这样用 branch_b 覆盖 branch_a :
git checkout branch_b
git merge -s ours branch_a
git checkout branch_a
git merge branch_b
Run Code Online (Sandbox Code Playgroud)
结果应该是你的 branch_a 现在本质上是 branch_b。
我是一个 git 新手,所以请注意 emptor
| 归档时间: |
|
| 查看次数: |
5243 次 |
| 最近记录: |