【发布时间】:2014-07-21 13:06:55
【问题描述】:
在 git 中,如何找出目录中的哪些文件自某些提交以来没有更改?
【问题讨论】:
-
使用命令
git status -
适用于一个文件,但如何找出自提交以来未更改的所有文件
标签: git
在 git 中,如何找出目录中的哪些文件自某些提交以来没有更改?
【问题讨论】:
git status
标签: git
IMO 一种更简单的生成列表的方法是以下命令链:
git ls-files --full-name | grep -v "$(git diff --name-only <REF>)"
<REF> 是提交的哈希值,您希望从该提交的未更改文件开始。
git ls-files 列出所有版本控制的文件,然后对自指定提交以来不在更改文件列表中的所有文件进行 grep。
【讨论】:
git ls-files 只会列出工作目录中及下方的文件。
使用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~6 或 REV=branch-name~~
【讨论】:
git ls-files?然后可以使用git ls-files | grep -v $(git diff --name-only <REF>) 生成一个列表。