我真的很难理解这次合并出了什么问题。我创建了一个功能分支,并重组了项目的某些部分。当我尝试将其合并到master中时,事情变得混乱了,冲突消息使我感到困惑。我在两个分支的相同位置有相同文件
“旧版/css/menu.css”
。未合并的冲突路径显示以下消息:
由我们添加-“ legacy / css / menu.css”
首先,我不明白为什么“我们增加了”情况可能引起冲突(它没有说“两者都增加了”,所以出了什么问题?)。
当我尝试检出文件的“它们的版本”时,它的第二个内容是: “ legacy / css / menu.css”没有版本。好吧
文件中没有任何冲突标记。
我假设git在两个文件之间看不到任何关系,只是它们具有相同的名称并且恰好位于同一位置(尽管我不知道为什么我不认为我已经搬家了)项目的那部分实际上是“ / legacy /**”。
有人可以给我一些有关这种情况的可能原因的见解吗?以及如何解决这一冲突。我需要“他们的”版本在合并的提交快照中。预先感谢您的时间和精力:)
答案 0 :(得分:1)
也许像下面这样
# init git resposi
mkdir /tmp/demo && cd /tmp/demo
git init
echo "aaaa" > A
git add . && git commit -m "commit"
# move file A to A1 in branch b1
git checkout -b b1
mv A A1
git add . && git commit -m "commit"
# move file A to A2 in branch master
git checkout master
mv A A2
git add . && git commit -m "commit"
# try to merge branch b1 to master
git merge b1
现在,输入git status
,您将看到
both deleted: A
added by them: A1
added by us: A2
您应该通过git
或git add
告诉git checkout
您想要的代码
如果您想保留A1
,可以使用
git add A1
git rm --cached A A2
git merge --continue
或
git checkout b1 A1
git rm --cached A A2
git merge --continue
从git
的角度来看
git
开始合并时
他将尝试合并所有能够推断出最终版本的代码。
例如,file X
中的source branch
是
line1
line2
line3
line4
line5
现在branch A
和branch B
都来自source branch
也许分支图就像波纹管
source branch ---*---*---*--- branch A
\
\
*---*--- branch B
现在,git
与branch A
合并branch B
案例1
file X
仅在一个分支中更改
git
可以推断file X
的最终版本将被更改为一个
案例2
两个分支都编辑file X
,但是更改后的行没有冲突
例如,branch A
将line1
更改为newline1
和
branch B
将line5
更改为newline5
在这种情况下,git
也知道file X
的最终版本是
newline1
line2
line3
line4
newline5
案例3
当更改是分支冲突时
这次,git
不知道如何合并,它将文件标记为已修改
打开文件时,您将看到类似以下的内容:
line1
line2
<<<<<< some branch name
line3 change in branch A
======
line3 change in branch B
<<<<<< another branch name
line4
line5
这次轮到您了,您应该将文件修改为所需的格式,并告诉git
您解决了合并冲突,然后让git
执行git merge --continue
< / p>
如果git
知道如何合并(尚未发现任何冲突),则git
只能使用git merge
合并两个分支
如果git
遇到冲突。因此,完成步骤如下所示
git merge
git
找到冲突,git
暂停合并,git
标记文件both modified/both deleted/added by us/added by them
git
,您已经解决了冲突。 git add <file name/folder name>
git merge --continue
答案 1 :(得分:0)
您可以下载称为P4Merge的第三方合并工具,该工具可以通过比较本地|本地|基地修改后代码的远程版本。 从以下位置下载P4Merge:https://www.perforce.com/products/helix-core-apps/merge-diff-tool-p4merge
我也建议您使用Git GUI工具,例如-Sourcetree