1

我在使用所有显示存储库日志/历史记录的 git 命令时遇到问题。此问题仅限于我的一个存储库。我还有其他几个工作得很好。

对于有问题的仓库,我只看到提交的摘要,其中默认行为也是显示差异。

$ git show
  commit bc8865f8b16ccf9eerrt678df99a4b89e73c0545
  Merge: 677f483 3e8617d
  Author: Some Author
  Date:   Thu Jul 23 07:56:28 2015 -0400

  Merge branch 'Some_branch' ....

同样,git diff-tree命令适用于除此之外的所有 repos。

正常回购:

git diff-tree --pretty=format:%an %cn 5cff917e
Joe Black Joe Black
:040000 040000 98c97ee8929b487ae14ada67c1932205a80cfc3f 719f1764f123d462b20707f5f7740e4f473b2b47 M  oracle

回购有问题:

$ git diff-tree --pretty=format:%an 39ebdeb8f29

jblack@DFX1 ~/repositories/RepoName(master)
4

2 回答 2

4

您正在git show合并提交上运行:

Merge: 677f483 3e8617d

没有唯一的方式来显示合并提交的差异:这个提交有两个父项,您可以与他们中的任何一个进行差异。要显示每个父母的差异,请使用

git show -m <commit>
于 2015-07-28T15:59:12.583 回答
3

文档_git show

对于提交,它显示日志消息和文本差异。它还以 git diff-tree --cc 生成的特殊格式呈现合并提交。

来自git diff-tree文档

--cc
这个标志改变了合并提交补丁的显示方式,类似于 -c 选项。它暗示了 -c 和 -p 选项,并通过省略无趣的大块来进一步压缩补丁输出,这些大块的父项中的内容只有两个变体,并且合并结果选择其中一个而无需修改。当所有大块都无趣时,不会显示提交本身和提交日志消息,就像在任何其他“空差异”情况下一样。

因此,对于合并,默认情况下显示不会打扰您自动合并为您静默处理的更改。正如 Matthieu Moy 指出的那样,无论如何都要看到所有的变化,喂它-m

于 2015-07-28T16:03:33.193 回答