由于官僚主义的原因,我需要为报告获得存储库中所有更改的文件的列表(我从现有源代码开始)。
我该怎么跑才能拿到这个列表?
由于官僚主义的原因,我需要为报告获得存储库中所有更改的文件的列表(我从现有源代码开始)。
我该怎么跑才能拿到这个列表?
当前回答
查找自上次提交以来修改过的所有文件的名称:
git diff --name-only
或者(获取更多信息,包括未跟踪的文件):
git status
其他回答
对于在给定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 show可以得到类似的结果。为了查看包含文件列表的提交(就像它在git日志视图中一样),使用:
git show --name-only [commit-id_A]^..[commit-id_B]
其中[commit- id_a]是初始提交,[commit- id_b]是您想要显示的最后一次提交。
特别注意^符号。如果不这样做,commit-id_A信息将不会部署。
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 diff --name-only
或者(获取更多信息,包括未跟踪的文件):
git status
一些过滤器是为我工作在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 }}
试试这些,看看哪一个适合你的需要。