【问题标题】:How to find which files have not changed since commit?如何查找自提交以来哪些文件没有更改?
【发布时间】:2014-07-21 13:06:55
【问题描述】:

在 git 中,如何找出目录中的哪些文件自某些提交以来没有更改?

【问题讨论】:

  • 使用命令git status
  • 适用于一个文件,但如何找出自提交以来未更改的所有文件

标签: git


【解决方案1】:

IMO 一种更简单的生成列表的方法是以下命令链:

git ls-files --full-name | grep -v "$(git diff --name-only <REF>)"

&lt;REF&gt; 是提交的哈希值,您希望从该提交的未更改文件开始。


git ls-files 列出所有版本控制的文件,然后对自指定提交以来不在更改文件列表中的所有文件进行 grep。

【讨论】:

  • 请注意,这要求您位于存储库的顶层,因为git ls-files 只会列出工作目录中及下方的文件。
【解决方案2】:

使用git diff --name-only $REV 获取已更改文件的列表。使用git -C $(git rev-parse --show-toplevel) ls-tree -r HEAD --name-only 获取所有文件的列表。使用grep 分隔集合:

git diff ${REV?must specify a REV} --name-only > /tmp/list
git -C $(git rev-parse --show-toplevel) ls-tree -r HEAD  --name-only |
     grep -f /tmp/list -v

在执行这些命令之前,您需要在变量 REV 中指定一个 rev。例如,REV=HEAD~6REV=branch-name~~

【讨论】:

  • 哈!你应该说'学习使用 git' :) 我一直在寻找更简单的方法,但我想这不是那么常见的任务。
  • 你有什么理由不使用git ls-files?然后可以使用git ls-files | grep -v $(git diff --name-only &lt;REF&gt;) 生成一个列表。
  • 没什么,我只是对ls-tree比较熟悉。
猜你喜欢
  • 2018-09-25
  • 2019-09-14
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
  • 2014-07-07
  • 2021-11-04
相关资源
最近更新 更多