Sha*_*awn 1807 git git-diff git-show
我在回购中有一堆提交.我想看到两个提交之间更改的文件列表 - 从SHA1到SHA2.
我应该使用什么命令?
Pet*_*ter 2466
git diff --name-only SHA1 SHA2
Run Code Online (Sandbox Code Playgroud)
您只需要包含足够的SHA来识别提交.例如,您也可以这样做
git diff --name-only HEAD~10 HEAD~5
Run Code Online (Sandbox Code Playgroud)
查看第十个最新提交和第五个最新提交(或左右)之间的差异.
art*_*bot 393
git diff --name-status [SHA1 [SHA2]]
Run Code Online (Sandbox Code Playgroud)
就像--name-only,除了你得到一个简单的前缀,告诉你文件发生了什么(修改,删除,添加......)
git log --name-status --oneline [SHA1..SHA2]
Run Code Online (Sandbox Code Playgroud)
类似,但提交消息后列出了提交,因此您可以看到文件何时更改.
如果您对某些文件/文件夹发生的事情感兴趣,可以附加-- <filename> [<filename>...]
到该git log
版本.
如果你想看看单个提交发生了什么,称之为SHA1,然后做
git log --name-status --oneline [SHA1^..SHA1]
文件状态标志:
M已修改 - 文件已被修改
C copy-edit - 文件已被复制和修改
R rename-edit - 文件已被重命名和修改
A已添加 - 文件已添加
D已删除 - 文件已被删除
U unmerged -合并后文件有冲突
lee*_*wah 68
似乎没有人提到过这个开关--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(-)
Run Code Online (Sandbox Code Playgroud)
还有 --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
Run Code Online (Sandbox Code Playgroud)
和 --shortstat
$ git diff --shortstat HEAD~5 HEAD
9 files changed, 117 insertions(+), 26 deletions(-)
Run Code Online (Sandbox Code Playgroud)
Tim*_*mes 49
但是为了看到你的分支和它的共同祖先与另一个分支(比如origin/master)之间的文件发生了变化:
git diff --name-only `git merge-base origin/master HEAD`
Run Code Online (Sandbox Code Playgroud)
m12*_*rpv 39
之前每个答案的最大问题是,如果您想使用试图从存储库中获取的信息,您会被输入寻呼机,这是非常烦人的。特别是如果您是一名开发人员,宁愿学习您要开发的应用程序的业务逻辑,而不是学习 vim 命令。
使用 --no-pager 可以解决这个问题。
git --no-pager diff --name-only sha1 sha2
Run Code Online (Sandbox Code Playgroud)
Max*_*eod 20
要补充@ artfulrobot的答案,如果要在两个分支之间显示已更改的文件:
git diff --name-status mybranch..myotherbranch
Run Code Online (Sandbox Code Playgroud)
注意优先顺序.如果先放置较新的分支,则会将文件显示为已删除而不是添加.
添加a grep
可以进一步细化:
git diff --name-status mybranch..myotherbranch | grep "A\t"
Run Code Online (Sandbox Code Playgroud)
然后,这将只显示添加的文件myotherbranch
.
以下对我来说效果很好:
git show --name-only --format=tformat: SHA1..SHA2
Run Code Online (Sandbox Code Playgroud)
它也可以与单个提交一起使用:
git show --name-only --format=tformat: SHA1
Run Code Online (Sandbox Code Playgroud)
这在Jenkins中使用很方便,您可以在其中获得变更集 SHA 哈希值的列表,并且想要迭代它们以查看哪些文件已更改。
这与前面的几个答案类似,但使用tformat:
而不是format:
删除提交之间的分隔符空间。
在你的下面添加别名~/.bash_profile
,然后运行source ~/.bash_profile
; 现在,您需要在showfiles
git存储库中最后一次提交,运行时查看更新的文件.
alias showfiles='git show --pretty="format:" --name-only'
Run Code Online (Sandbox Code Playgroud)
对于只需要关注 Java 文件的人来说,这是我的解决方案:
git diff --name-status SHA1 SHA2 | grep '\.java$'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
654623 次 |
最近记录: |