我有一个分支称为演示,我需要与主分支合并。我可以通过以下命令得到想要的结果:
git pull origin demo
git checkout master
git pull origin master
git merge demo
git push origin master
我唯一关心的是,如果有任何合并问题,我想告诉git覆盖的变化在主分支没有给我合并提示。所以基本上演示分支中的变化会自动覆盖主分支中的变化。
我环顾四周,有多种选择,但我不想冒险合并。
我有一个分支称为演示,我需要与主分支合并。我可以通过以下命令得到想要的结果:
git pull origin demo
git checkout master
git pull origin master
git merge demo
git push origin master
我唯一关心的是,如果有任何合并问题,我想告诉git覆盖的变化在主分支没有给我合并提示。所以基本上演示分支中的变化会自动覆盖主分支中的变化。
我环顾四周,有多种选择,但我不想冒险合并。
当前回答
当我尝试使用-X their和其他相关命令开关时,我一直得到一个合并提交。我可能没有正确理解。一个容易理解的替代方法是删除分支,然后再次跟踪它。
git branch -D <branch-name>
git branch --track <branch-name> origin/<branch-name>
这并不是真正的“合并”,但这正是我遇到这个问题时所寻找的。在我的例子中,我想从一个远程分支中拉出强制推送的更改。
其他回答
你可以在git merge中尝试“ours”选项,
git合并分支-X我们的 这个选项迫使冲突块自动解决干净,有利于我们的版本。来自其他树的不冲突的更改 用我们这边的都反射到合并的结果。对于二进制文件,整个内容都是从我们这边取的。
当我尝试使用-X their和其他相关命令开关时,我一直得到一个合并提交。我可能没有正确理解。一个容易理解的替代方法是删除分支,然后再次跟踪它。
git branch -D <branch-name>
git branch --track <branch-name> origin/<branch-name>
这并不是真正的“合并”,但这正是我遇到这个问题时所寻找的。在我的例子中,我想从一个远程分支中拉出强制推送的更改。
这些命令将帮助覆盖代码的演示分支到主
git fetch --all
在本地拉您的演示分支
git pull origin demo
现在签出到主分支。该分支将与演示分支上的代码完全更改
git checkout master
停留在主分支并运行此命令。
git reset --hard origin/demo
重置意味着您将重置当前分支
——hard是一个标志,意味着它将被重置而不会引发任何合并冲突
Origin /demo将被认为是将强制覆盖当前主分支的代码
上述命令的输出将显示您在origin/demo或demo分支上的最后一个提交消息
然后,最后,强制将主分支上的代码推到远程回购。
git push --force
这种合并方法将在master之上添加一个提交,该提交粘贴了任何特性中的内容,而不会抱怨冲突或其他废话。
在你碰任何东西之前
git stash
git status # if anything shows up here, move it to your desktop
现在准备大师
git checkout master
git pull # if there is a problem in this step, it is outside the scope of this answer
把功能都打扮起来
git checkout feature
git merge --strategy=ours master
使出杀手锏
git checkout master
git merge --no-ff feature
我有一个类似的问题,我需要有效地替换任何文件,有变化/冲突与一个不同的分支。
我发现的解决方案是使用git merge -s我们的分支。
注意,该选项是-s而不是-X。-s表示使用ours作为顶级合并策略,-X将把ours选项应用于递归合并策略,这不是我(或我们)在这种情况下想要的。
步骤,其中oldbranch是要用newbranch覆盖的分支。
Git checkout newbranch签出你想要保留的分支 Git merge -s我们的oldbranch在旧的分支中合并,但保留我们所有的文件。 Git checkout oldbranch签出你想要覆盖的分支 Get merge newbranch在新分支中合并,覆盖旧分支