我在存储库中有一堆提交。我想看到两次提交之间更改的文件列表-从SHA1到SHA2。
我应该使用什么命令?
我在存储库中有一堆提交。我想看到两次提交之间更改的文件列表-从SHA1到SHA2。
我应该使用什么命令?
当前回答
如果有人正在查找已更改文件的列表,包括暂存文件
git diff HEAD --name-only --relative --diff-filter=AMCR
git diff HEAD --name-only --relative --diff-filter=AMCR sha-1 sha-2
如果需要绝对路径,请删除--relative。
其他回答
为了补充@artfurobot的答案,如果您想在两个分支之间显示更改的文件:
git diff --name-status mybranch..myotherbranch
注意优先顺序。如果您先放置较新的分支,那么它将显示文件已删除而不是已添加。
添加grep可以进一步细化:
git diff --name-status mybranch..myotherbranch | grep "A\t"
然后将只显示myotherbranch中添加的文件。
但是,如果看到文件在您的分支和它的共同祖先与另一个分支之间发生了更改(例如,origin/master):
git diff --name-only `git merge-base origin/master HEAD`
基于gitdiff-name状态,我编写了gitdiffviewGit扩展,该扩展呈现了两个路径之间变化的层次树视图。
以下内容对我很有用:
git show --name-only --format=tformat: SHA1..SHA2
它也可以用于单个提交:
git show --name-only --format=tformat: SHA1
这对于在Jenkins中使用非常方便,在Jenkins中将为您提供一个变更集SHA哈希值列表,并希望对其进行迭代以查看哪些文件已被更改。
这与前面的几个答案类似,但使用tformat:而不是format:删除了提交之间的分隔符。
正如巧妙的机器人在回答中所说:
git diff --name-status [SHA1 [SHA2]]
我的例子:
git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997
4b95d595812211553070046bf2ebd807c0862cca
M views/layouts/default.ctp
M webroot/css/theme.css
A webroot/img/theme/logo.png