虽然合并了两个分支,但很多次合并失败了,我要单独解决差异问题。
一些合并成功的文件,我可以使用
看到它们的差异git diff --staged <merged-file>
问题在于,对于未合并路径,当我尝试检查引入的差异时,我什么也看不见。
git diff <unmerged-file>
但是当我尝试使用远程主分支进行区分时,会出现差异。
git diff origin/master <unmerged-file>
为什么会发生这种情况&gt;?合并操作是否更新了我当地的HEAD或什么?
此外,当我使用git add
来标记分辨率时,它们永远不会进入临时区域,这是git diff
没有显示任何内容的原因吗?
答案 0 :(得分:11)
在合并期间,冲突文件处于特殊状态。存在多个具有相同文件名和不同blob id的条目。这些通常是三个blob(用于三向合并)或两个blob(用于简单合并)。
尝试合并..
$ git merge origin/otherbranch
Merge remote-tracking branch 'origin/otherbranch' into mybranch
Conflicts:
somefile.txt
查看需要合并的文件
$ git diff --name-status --diff-filter=U
U somefile.txt
或
$ git update-index --refresh
somefile.txt: needs merge
查看与要合并的文件相关的blob;
$ git ls-files -s somefile.txt
100644 9a0579524e0c7ba9fc9ae18badadaddcad2d598f **1** somefile.txt
100644 1bcff16b6de5ed304a06e643070e40787db1ead8 **2** somefile.txt
100644 6e52271b22f6a6d1150619433551e0fa9094b108 **3** somefile.txt
根据git-merge手册页。 1 =共同的祖先,2 = HEAD(我们的)和3 = MERGE_HEAD(他们的)
显示差异
$ git diff 9a0579524e0c7ba9fc9ae18badadaddcad2d598f 6e52271b22f6a6d1150619433551e0fa9094b108
< some differences >
检索共同的祖先..
$ git cat-file blob 9a0579524e0c7ba9fc9ae18badadaddcad2d598f
HEAD的结帐版
$ git checkout --ours somefile.txt
MERGE_HEAD的结帐版本
$ git checkout --theirs somefile.txt
重置为'合并'已更改
$ git checkout -m somefile.txt
答案 1 :(得分:9)
我能够看到冲突文件更改的唯一方法是:
git diff --merge <unmerged-file>
答案 2 :(得分:0)
您尚未将合并的更改推送到远程分支。合并仅影响本地分支。因此本地和远程分支之间存在差异。