为什么git diff不显示未合并路径的任何内容

为什么git diff不显示未合并路径的任何内容,git,merge,Git,Merge,当合并两个分支时,多次合并失败,我必须单独解决差异 一些文件成功合并,我可以看到差异: git diff --staged <merged-file> 问题是,对于未合并的路径,当我尝试检查引入的差异时,我什么也看不到: git diff <unmerged-file> 但当我尝试将其与远程主分支进行区分时,会出现以下区别: git diff origin/master <unmerged-file> 为什么会这样?合并操作正在更新我的本地头还是什么?

当合并两个分支时,多次合并失败,我必须单独解决差异

一些文件成功合并,我可以看到差异:

git diff --staged <merged-file>
问题是,对于未合并的路径,当我尝试检查引入的差异时,我什么也看不到:

git diff <unmerged-file>
但当我尝试将其与远程主分支进行区分时,会出现以下区别:

git diff origin/master <unmerged-file>
为什么会这样?合并操作正在更新我的本地头还是什么?
此外,当我使用git add来标记分辨率时,它们从不进入暂存区域-这就是git diff没有显示任何内容的原因吗?

您没有将合并的更改推送到远程分支。合并只影响本地分支。因此,本地分支和远程分支之间存在差异

在合并过程中,冲突文件处于特殊状态。存在多个具有相同文件名和不同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

查看与正在合并的文件相关的blob

$ git ls-files -s somefile.txt
100644 9a0579524e0c7ba9fc9ae18badadaddcad2d598f **1** somefile.txt
100644 1bcff16b6de5ed304a06e643070e40787db1ead8 **2** somefile.txt
100644 6e52271b22f6a6d1150619433551e0fa9094b108 **3** somefile.txt
根据git合并手册页。1=普通安切斯特,2=我们的头,3=合并他们的头

显示差异

$ git diff 9a0579524e0c7ba9fc9ae18badadaddcad2d598f 6e52271b22f6a6d1150619433551e0fa9094b108
< some differences >
从合并头签出版本

$ git checkout --theirs somefile.txt
重置为“合并”已更改

$ git checkout -m somefile.txt

我能够看到冲突文件更改的唯一方法是:

git diff --merge <unmerged-file>

是的,我还没有提交这些更改。所以即使是git diff也应该显示一些东西?你还需要将更改推送到远程分支我知道,我只是说为什么git diff没有显示任何东西?好吧,我读到了不同的内容。只需检查远程分支上是否存在合并的更改。您了解原因吗?我无法重现您描述的行为。git ls files-u为未合并的文件生成什么输出?对我来说不起作用。我收到以下错误消息:致命:-没有合并头进行合并?您的问题中可能缺少一些额外的细节。您要合并到哪个分支?在您的示例中,您是在master中,还是将master合并到您的分支中?在尝试类似的情况时,我用>>==@LopSae打印了一个冲突的文件,并将一个开发分支合并到master中。区分冲突的文件只显示头信息。看起来它知道差异存在,但不知道是什么。你应该将这些细节添加到问题本身,包括你在git差异上看到的内容。如果你正在合并的文件更改足够简单,你也可以将它们添加到描述中,或者创建一个简化的示例来演示如何重现该问题。该问题有大量的详细信息,很有用,但实际上并没有回答问题。@LopSae Yes!确切地说,这就是为什么我不明白我是否应该给他赏金你不需要选择投票最多的问题作为答案,除非你同意这确实是答案。同样,如果你没有选择一个你自己的答案,你将有更多的社区参与,特别是在赏金正在进行的时候。”我的问题是,问题是什么?如果您阅读原始问题,它会描述一个特定的问题,并询问为什么会发生这种情况?。选择的答案似乎回答了如何在合并文件上使用diff的问题,这显然很简单。
$ git checkout -m somefile.txt
git diff --merge <unmerged-file>