如何只列出两个提交之间更改的文件名?

我在回购中有一堆提交。 我想看到两个提交之间的文件列表 – 从SHA1到SHA2。

我应该使用什么命令?

git diff --name-only SHA1 SHA2 

你只需要包含足够的SHA来识别提交。 例如,你也可以做

 git diff --name-only HEAD~10 HEAD~5 

查看第十次最新提交和第五次最新提交(左右)之间的差异。

 git diff --name-status [SHA1 [SHA2]] 

就像名字只有,除了你得到一个简单的前缀,告诉你发生了什么事(文件修改,删除,添加…)

 git log --name-status --oneline [SHA1..SHA2] 

是相似的,但提交后提交消息列出,所以你可以看到一个文件被改变。

  • 如果您对某些文件/文件夹发生了什么感兴趣,则可以将-- <filename> [<filename>...]附加到git log版本。

  • 如果您想查看单个提交发生了什么,请将其称为SHA1,然后执行
    git log --name-status --oneline [SHA1^..SHA1]

文件状态标志:
M修改 – 文件已被修改
C复制 – 编辑 – 文件已被复制和修改
R重命名 – 编辑 – 文件已被重命名和修改
添加了一个 – 文件已被添加
D已删除 – 文件已被删除
U未合并 – 文件在合并后发生冲突

但是看到你的分支和它的共同祖先与另一个分支(比如origin / master)之间的文件改变了:

 git diff --name-only `git merge-base origin/master HEAD` 

为了补充@ artfulrobot的答案,如果你想在两个分支之间显示更改的文件:

 git diff --name-status mybranch..myotherbranch 

要优先考虑。 如果您先放置较新的分支,则会显示文件已删除而不是添加。

添加一个grep可以进一步细化:

 git diff --name-status mybranch..myotherbranch | grep "A\t" 

那么只会显示myotherbranch添加的文件。

将下面的别名添加到你的~/.bash_profile ,然后运行source ~/.bash_profile ; 现在,无论何时您需要在上次提交中查看更新的文件,从您的git存储库运行showfiles

 alias showfiles='git show --pretty="format:" --name-only' 

这将显示文件中的更改:

 git diff --word-diff SHA1 SHA2 

使用git log –pretty = oneline> C:\ filename.log

这将只logging一个oneline(–pretty = oneline)这就是更改文件的名称。 也将所有的细节logging到您的输出文件。

似乎没有人提到开关--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 show --name-only

基于git diff --name-status我写了git-diffview git扩展,它呈现了两个path之间变化的层次树视图。