我有一个分支称为演示,我需要与主分支合并。我可以通过以下命令得到想要的结果:

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在新分支中合并,覆盖旧分支