如何在git中将一个分支复制到另一个现有的分支

12

我想将一个分支中的所有更改推送到另一个分支(现有分支)而不进行合并。

例如,考虑两个分支branch1和branch2。branch1和branch2都跟踪origin/branch1和origin/branch2。

Branch1有提交A、B、C、D、E、F,而Branch2有提交A、B、D、F。

我想让Branch2完全像branch1一样。使用Cherry-picking和Merging会导致冲突,我不想浪费时间去解决这些冲突,因为我只是盲目地将branch1复制到branch2。

我可以通过以下方式实现:

git checkout branch1 # Moves to branch1
git push origin :branch2 # Deletes remote branch origin/branch2
git branch -d branch2 # Deletes the local copy of this branch
git pull
git push origin HEAD:branch2 # Creates new branch in remote repository from the HEAD at local branch branch1

有没有一种更好的方法通过合并命令中的一些--force选项来完成这个操作。我不想每次都删除分支,只是为了创建一个同名的新分支。

谢谢


3
可能是重复的问题:如何使用Git将一个分支重置到另一个分支?(https://dev59.com/_WUo5IYBdhLWcg3wkQFq) - Joe
但是,如果您的提交导致冲突,那么为什么您要盲目地倾泻所有东西呢? - DevDonkey
2
重置像 git checkout branch2 git reset --hard branch1 这样的操作对你来说是一个选项吗? - Melebius
3个回答

2
git switch branch1  
git pull  
git push origin branch1:branch2 --force-with-lease  #assume the remote name is origin  
git branch -f branch2 origin/branch2  #reset the local branch branch2 

1

从你想要清理的分支开始,例如branch2。然后,在该分支上进行变基并删除所有唯一于该分支的提交。

branch2现在应该处于创建时的相同状态。现在要“克隆”来自branch1的所有提交,只需将branch2变基到branch1即可。


1
git checkout branchA
git merge -X theirs branchB

-X 只是策略选项。默认的递归策略仅在冲突时使用策略选项 ours。请参阅 git-merge 帮助。 - Weidenrinde
可能的解决方案列表:https://dev59.com/GW445IYBdhLWcg3wWI6L - Weidenrinde

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接