首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主树枝上的git diff树是空的。

主树枝上的git diff树是空的。
EN

Stack Overflow用户
提问于 2018-05-24 09:03:30
回答 1查看 1.7K关注 0票数 0

当我跑的时候

代码语言:javascript
复制
git diff-tree --no-commit-id --name-only -r HEAD

在一个分支上,它返回上次提交时修改的文件名。

但是,当我在主分支上运行相同的命令时,它什么也不返回。

阅读

代码语言:javascript
复制
git help diff-tree

并没有澄清这种行为。它说这个命令比较一个或几个树形。如果只指定一个,则将其与其父母进行比较。

师父:

代码语言:javascript
复制
$ git diff-tree --name-only -r HEAD
$ git diff-tree --name-only -r HEAD HEAD^
path/to/modified-file
$

为什么在主服务器上运行这个命令什么也不返回?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-24 16:50:50

如果当前提交是合并提交(有两个或多个父级),则:

代码语言:javascript
复制
git diff-tree --name-only -r HEAD

指:

代码语言:javascript
复制
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)对合并提交有哪些更改(尽管如果某个文件被列出了两次,合并提交只有两个父文件,那么您将立即能够判断它是从双亲更改的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50505228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档