Answers:
git diff --name-only SHA1 SHA2
您只需要包含足够的SHA即可识别提交。您也可以这样做,例如
git diff --name-only HEAD~10 HEAD~5
查看第十次提交和第五次提交(大约)之间的差异。
git show --name-only SHA1
。
git diff --name-status [TAG|SHA1]
显示了对文件也执行了哪些操作
git diff --name-status
似乎并不想显示添加的文件。@sschuberth指出git show
,这对我来说似乎确实可以正常工作: git show --pretty=format: --name-status
。只是git show --name-status
提供了更多信息,但仍然不错且密集...这将是我的新goto命令;)
git diff --name-status [SHA1 [SHA2]]
就像--name-only一样,只不过您得到一个简单的前缀来告诉您文件发生了什么(修改,删除,添加...)。
git log --name-status --oneline [SHA1..SHA2]
与之类似,但是在提交消息之后列出了提交,因此您可以查看文件的更改时间。
如果您只对某些文件/文件夹的内容感兴趣,可以将其附加-- <filename> [<filename>...]
到git log
版本中。
如果您想查看一次提交的结果,将其命名为SHA1,然后执行
git log --name-status --oneline [SHA1^..SHA1]
文件状态标志:
M已修改-已修改文件
C复制编辑-已复制并修改文件
R重命名编辑-已重命名并修改
文件A已添加-已添加
文件D已删除-已删除文件
U未合并-合并后文件有冲突
--relative[=<path>]
我不确定,该选项可能会对您有所帮助。否则总会有| erep -v '(.tmp|.foo|.dontwant)$'
...
似乎没有人提到此开关--stat
:
$ git diff --stat HEAD~5 HEAD
.../java/org/apache/calcite/rex/RexSimplify.java | 50 +++++++++++++++++-----
.../apache/calcite/sql/fun/SqlTrimFunction.java | 2 +-
.../apache/calcite/sql2rel/SqlToRelConverter.java | 16 +++++++
.../org/apache/calcite/util/SaffronProperties.java | 19 ++++----
.../org/apache/calcite/test/RexProgramTest.java | 24 +++++++++++
.../apache/calcite/test/SqlToRelConverterTest.java | 8 ++++
.../apache/calcite/test/SqlToRelConverterTest.xml | 15 +++++++
pom.xml | 2 +-
.../apache/calcite/adapter/spark/SparkRules.java | 7 +--
9 files changed, 117 insertions(+), 26 deletions(-)
也有 --numstat
$ git diff --numstat HEAD~5 HEAD
40 10 core/src/main/java/org/apache/calcite/rex/RexSimplify.java
1 1 core/src/main/java/org/apache/calcite/sql/fun/SqlTrimFunction.java
16 0 core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
8 11 core/src/main/java/org/apache/calcite/util/SaffronProperties.java
24 0 core/src/test/java/org/apache/calcite/test/RexProgramTest.java
8 0 core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
15 0 core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
1 1 pom.xml
4 3 spark/src/main/java/org/apache/calcite/adapter/spark/SparkRules.java
和 --shortstat
$ git diff --shortstat HEAD~5 HEAD
9 files changed, 117 insertions(+), 26 deletions(-)
但是要查看文件在分支和它的共同祖先与另一个分支之间发生了变化(例如起源/母版):
git diff --name-only `git merge-base origin/master HEAD`
git diffstatus master
或类似的话触发上述情况。
git show --pretty=format: --name-only origin/master..
。
git diff --name-only HEAD...master
请注意三个点)。有关详细说明,请参见此处。
git diff --name-only master..branch
与github PR列表不对应。这样更精确。但是无论如何,我在github PR中有173个chaned文件,而171个。(merge-base
我没有228 vs 171)
如果要显示两个分支之间的更改文件,请补充@artfulrobot的答案:
git diff --name-status mybranch..myotherbranch
注意优先级。如果首先放置较新的分支,则它将显示文件已删除而不是添加。
添加一个grep
可以进一步完善的事情:
git diff --name-status mybranch..myotherbranch | grep "A\t"
然后将仅显示添加到中的文件myotherbranch
。
--diff-filter
通过本机提供此功能,这意味着错误结果(例如误报)的可能性较小
使用git log --pretty = oneline> C:\ filename.log
这将仅记录一个单行(--pretty = oneline),即已更改文件的名称。也将所有详细信息记录到您的输出文件中。
git log --pretty=oneline
只给我SHA和使用git 2.10.1的提交消息
正如artfulrobot在回答中所说:
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
基于此,git diff --name-status
我编写了git-diffview git扩展,它呈现了两个路径之间变化的层次树视图。