如何只列出两个提交之间更改的文件名?
我在回购中有一堆提交。 我想看到两个提交之间的文件列表 – 从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之间变化的层次树视图。