当我跑的时候
git diff-tree --no-commit-id --name-only -r HEAD在一个分支上,它返回上次提交时修改的文件名。
但是,当我在主分支上运行相同的命令时,它什么也不返回。
阅读
git help diff-tree并没有澄清这种行为。它说这个命令比较一个或几个树形。如果只指定一个,则将其与其父母进行比较。
师父:
$ git diff-tree --name-only -r HEAD
$ git diff-tree --name-only -r HEAD HEAD^
path/to/modified-file
$为什么在主服务器上运行这个命令什么也不返回?
发布于 2018-05-24 16:50:50
如果当前提交是合并提交(有两个或多个父级),则:
git diff-tree --name-only -r HEAD指:
git diff-tree --name-only -r HEAD HEAD^1 HEAD^2(如果是章鱼合并,则添加更多的HEAD^number参数,或者使用特殊的^@表示法一次命名所有父母;以上主要是为了说明)。
因为这比较多个树,所以它使用一个合并的diff (或者与--stdin一起使用,默认情况下根本不产生diff )。As 文件上说
请注意,组合的diff只列出从所有父类修改的文件。
(强调我的)。如果子提交(合并)提交的版本与父#1中的文件不同,但与父#2中的文件匹配,则不会看到该文件的名称。
请注意,-m标志将合并拆分为多个虚拟提交,每个提交具有一个父节点,然后列出与该父节点的差异。但是,将此与--no-commit-id相结合意味着更难分辨哪个父(S)对合并提交有哪些更改(尽管如果某个文件被列出了两次,合并提交只有两个父文件,那么您将立即能够判断它是从双亲更改的)。
https://stackoverflow.com/questions/50505228
复制相似问题