我有一大堆的回购提交的。 我希望看到改变两次提交之间的文件列表 - 从SHA1 SHA2到。
我应该使用什么命令?
我有一大堆的回购提交的。 我希望看到改变两次提交之间的文件列表 - 从SHA1 SHA2到。
我应该使用什么命令?
git diff --name-only SHA1 SHA2
在这里你只需要包括SHA足够识别提交。 你也可以做,例如
git diff --name-only HEAD~10 HEAD~5
看到第十最新提交和第五最新的(左右)之间的差异。
git diff --name-status [SHA1 [SHA2]]
就像只有--name-,除非你得到一个简单的前缀告诉你发生了什么文件(修改,删除,添加...)
git log --name-status --oneline [SHA1..SHA2]
是相似的,但提交的提交信息后上市,所以你可以看到,当一个文件被改变了。
如果你感兴趣的只是发生了什么事某些文件/文件夹,您可以附加-- <filename> [<filename>...]
到git log
版本。
如果你想看看发生了什么单个提交,称之为SHA1,然后做
git log --name-status --oneline [SHA1^..SHA1]
文件状态标志:
中号修改 - 文件已被修改
C复制,编辑 - 文件已经被复制和修改
R给编辑 - 文件已被重命名和修改
加入A - 文件已添加
d删除 - 文件已被删除
ü未合并 - 文件合并后冲突
但看到你的分支,其共同的祖先之间更改的文件与另一个分支(说原点/主):
git diff --name-only `git merge-base origin/master HEAD`
似乎没有人提到的开关--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(-)
为了补充@ artfulrobot的答案,如果你想显示两个分支之间已更改的文件:
git diff --name-status mybranch..myotherbranch
要小心的优先级。 如果将新的支路的第一,然后它会显示文件的删除,而不是增加。
添加grep
可以进一步细化的东西:
git diff --name-status mybranch..myotherbranch | grep "A\t"
那么这将只显示在添加的文件myotherbranch
。
下面添加别名到您的~/.bash_profile
,然后运行, source ~/.bash_profile
; 现在,只要你需要看到更新的文件在最后一次提交,运行, showfiles
从您的git仓库。
alias showfiles='git show --pretty="format:" --name-only'
这将显示在文件中的更改:
git diff --word-diff SHA1 SHA2
另外请注意,如果你只是想看到的最后一次提交,并收到一个之间的更改的文件。 这工作得很好: git show --name-only
使用git日志--pretty = ONELINE> C:\ filename.log
这将仅记录一个ONELINE(--pretty = ONELINE)这就是被改变的文件的名称。 也将记录所有的细节到输出文件。
作为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
只是有人谁需要只注重Java文件,这是我的解决方案:
git diff --name-status SHA1 SHA2 | grep '\.java$'
基于git diff --name-status
我写的混帐diffview git的扩展,呈现的两个路径之间发生了什么变化的层次结构树视图。
下面很适合我:
$ git show --name-only --format=tformat: SHA1..SHA2
它也可以用一个单一的使用提交:
git show --name-only --format=tformat: SHA1
这是非常方便的在詹金斯使用你在哪里提供的变更SHA的一个列表,并希望在它们之间迭代,以查看哪些文件已被更改。
这类似于一对夫妇以上问题的答案,但使用tformat:
而不是format:
删除提交之间的分隔空间。