繁体   English   中英

git diff --name-only 显示未更改的文件

[英]git diff --name-only shows unchanged files

编辑:它没有,我在下面解释了是什么让我这么认为。

我正在处理一个功能分支,命令git diff develop --name-only的输出显示了一个大文件列表:

...

path/to/some/unchangedFile.cpp

...

并且命令git diff develop -- path/to/some/unchangedFile.cpp显示输出,并且两次提交中的文件都相同。

什么会导致这样的问题?

所以我的问题是:

一种。 打印的路径相对于存储库的根目录,而不是绝对的或相对于工作目录的。 我个人认为这是一个糟糕的实现,因为在大多数情况下,当我使用 --name-only 时,我想对已更改的文件执行任务,而我不需要自己“修剪”路径

当文件参数在两次提交中都不存在时, git-diff 不会打印任何内容。 在我看来,这是违反直觉的。 当没有显示输出时,我假设该文件存在并且在两次提交中都是相同的。 我认为在这种情况下警告消息是合适的。

您可以列出功能分支中更改的(跟踪)文件,因为它是这样创建的:

$ git --no-pager diff --name-only FETCH_HEAD $(git merge-base FETCH_HEAD develop)

$(git merge-base FETCH_HEAD develop)在创建当前分支之前返回$(git merge-base FETCH_HEAD develop)的最后一次提交。 然后diff将当前头部与此提交进行比较。

您还可以看到自上次提交以来更改的文件

$ git --no-pager diff --name-only FETCH_HEAD~1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM