为什么git建议重新创建你想要合并的分支?

时间:2016-01-20 19:37:31

标签: git github merge

我有一个Github仓库,有两个分支,一个开发分支和一个主分支。我在dev分支上执行了一些更改,涉及移动一些文件。这意味着当我发出pull请求时,两个分支之间存在合并冲突。 Git首先通过命令行提供了解决冲突的建议:

# Update the local repo with changes made on the remote
git fetch origin

接下来是:

git checkout -b dev origin/dev

上述命令有什么作用?我已经有一个名为dev的分支,为什么我需要重新创建它?不需要先前的fetch命令执行任何必要的更新。我想我在这里错过了一些东西。

然后说它将新形成的dev分支与master合并,即

git merge master

这将允许我浏览所有冲突的文件并进行适当的更改,但如果更改与移动文件有关,这将如何显示在建议的更改中?

1 个答案:

答案 0 :(得分:1)

如果您的origin上有两个指向同一提交的分支,则更新其中一个分支(例如dev)不应导致与master的合并冲突。

当两个分支都对文件的同一部分进行了更改时,就会发生合并冲突。例如,如果其他人在您master上编辑的同一文件中将更改推送到dev,则可能发生合并冲突。


git checkout -b dev origin/dev做什么?
此命令创建一个名为dev的本地分支,该分支指向远程分支origin/dev当前指向的相同提交。如果您已有一个名为dev的本地分支,则此命令将失败并显示消息

fatal: A branch named 'dev' already exists

Git建议创建此分支,因为当您在命令中使用本地分支引用时merge更容易。这也可以避免您处于分离的HEAD状态"你没有指向任何特定分支的地方。

git merge master将尝试将当前签出的分支与主分支合并。因此,如果您已检出dev分支,并且masterdev之间当前存在合并冲突,则必须手动解决此冲突。然后Git将创建一个合并提交,它将两个分支合并。在此过程之后,您的dev(和HEAD)将指向此合并提交。