由于官僚主义的原因,我需要为报告获得存储库中所有更改的文件的列表(我从现有源代码开始)。

我该怎么跑才能拿到这个列表?


当前回答

列出所有未执行跟踪的更改文件: Git diff -name-only 使用实例列出所有被跟踪的已更改文件。 Git diff -name-only - staging 列出所有已跟踪和未跟踪的已更改文件: {git diff——name-only;Git diff -name-only - staging;} | sort | uniq 列出所有未跟踪的文件(由git状态列出的文件,因此不包括任何被忽略的文件): Git ls-files——other——exclude-standard

如果你在shell脚本中使用它,并且你想通过编程方式检查这些命令是否返回了任何东西,你会对git diff的——exit-code选项感兴趣。

其他回答

当我添加/修改/删除许多文件(自上次提交以来)时,我喜欢按时间顺序查看这些修改。

我用的是:

查询所有非暂存文件。 Git ls-files——other——modified——exclude-standard 获取每个文件的最后修改日期: 读取文件名时;执行echo -n "$(stat -c%y——$filename 2> /dev/null)”;echo $文件名;完成

尽管ruvim在评论中建议:

xargs -0 stat -c '%y %n' -- 

按时间顺序排列: 排序

别名使它更容易使用:

alias gstlast='git ls-files --other --modified --exclude-standard|while read filename; do  echo -n "$(stat -c%y -- $filename 2> /dev/null) "; echo $filename;  done|sort'

或者(多亏了ruvim,更短更高效)

alias gstlast='git ls-files --other --modified --exclude-standard|xargs -0 stat -c '%y %n' --|sort'

例如:

username@hostname:~> gstlast
2015-01-20 11:40:05.000000000 +0000 .cpl/params/libelf
2015-01-21 09:02:58.435823000 +0000 .cpl/params/glib
2015-01-21 09:07:32.744336000 +0000 .cpl/params/libsecret
2015-01-21 09:10:01.294778000 +0000 .cpl/_deps
2015-01-21 09:17:42.846372000 +0000 .cpl/params/npth
2015-01-21 12:12:19.002718000 +0000 sbin/git-rcd

我现在可以回顾我的修改,从最老的到最近的。

获取修改文件列表并将其保存到某个文本文件的最简单方法是:

git diff --name-only HEAD^ > modified_files.txt

一些过滤器是为我工作在GitHub动作取决于类型(pull_request或合并为主):

git --no-pager diff --name-only --diff-filter=ACMRT ${{github.event.pull_request.base.sha}} ${{ github.event.pull_request.head.sha }}
git --no-pager diff --name-only --diff-filter=ACMRT ${{github.event.pull_request.base.sha}} ${{github.sha}}
git log -m -1 --name-only --pretty="format:" ${{ github.sha }}

试试这些,看看哪一个适合你的需要。

对于在给定SHA和当前提交之间更改的文件:

git diff --name-only <starting SHA> HEAD

或者如果你想包含已更改但尚未提交的文件:

git diff --name-only <starting SHA>

更一般地说,下面的语法总是会告诉你在两次提交之间哪些文件被更改了(由它们的sha或其他名称指定):

git diff --name-only <commit1> <commit2>

使用——name-status而不是——name-only将显示文件及其名称发生了什么。

如果你想检查修改过的文件,你需要注意很多小事,比如哪个最好用, 比如,如果你想检查哪个文件改变了,只需输入

Git状态——它将显示文件的变化

然后,如果你想知道要做什么改变,可以通过多种方式进行检查,

Git diff——将显示所有文件中的所有更改

只有当只修改了一个文件时才有效

如果你想检查特定的文件,那么使用

git diff