我有一个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
这将允许我浏览所有冲突的文件并进行适当的更改,但如果更改与移动文件有关,这将如何显示在建议的更改中?
答案 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
分支,并且master
和dev
之间当前存在合并冲突,则必须手动解决此冲突。然后Git将创建一个合并提交,它将两个分支合并。在此过程之后,您的dev
(和HEAD
)将指向此合并提交。