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

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


当前回答

对于在给定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 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 diff --name-only

或者(获取更多信息,包括未跟踪的文件):

git status

unstaging modified列表可以使用git status和grep命令获取,如下所示。比如git status -s | grep M:

root@user-ubuntu:~/project-repo-directory# git status -s | grep '^ M'
 M src/.../file1.js
 M src/.../file2.js
 M src/.../file3.js
 ....

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

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

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

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

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

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

git diff

使用git show可以得到类似的结果。为了查看包含文件列表的提交(就像它在git日志视图中一样),使用:

git show --name-only [commit-id_A]^..[commit-id_B]

其中[commit- id_a]是初始提交,[commit- id_b]是您想要显示的最后一次提交。

特别注意^符号。如果不这样做,commit-id_A信息将不会部署。