我正在寻找一个简单的git
命令,它提供了一个格式良好的所有文件列表,这些文件是散列(SHA1)给出的提交的一部分,没有任何无关的信息.
我试过了:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Run Code Online (Sandbox Code Playgroud)
虽然它列出了文件,但它还包含每个文件的不需要的差异信息.
是否有另一个git
命令只提供我想要的列表,以便我可以避免从git show
输出中解析它?
Rya*_*ary 3498
首选方式(因为它是一个管道命令;意味着是程序化的):
$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js
Run Code Online (Sandbox Code Playgroud)
另一种方式(不太喜欢脚本,因为它是一个瓷器命令;意味着面向用户)
$ git show --pretty="" --name-only bd61ad98
index.html
javascript/application.js
javascript/ie6.js
Run Code Online (Sandbox Code Playgroud)
--no-commit-id
抑制提交ID输出.--pretty
参数指定一个空格式字符串,以避免开始时的残缺.--name-only
参数仅显示受影响的文件名(Thanks Hank).--name-status
参数是递归到子树Jak*_*ski 226
如果要获取已更改文件的列表:
git diff-tree --no-commit-id --name-only -r <commit-ish>
Run Code Online (Sandbox Code Playgroud)
如果要获取提交中所有文件的列表,可以使用
git ls-tree --name-only -r <commit-ish>
Run Code Online (Sandbox Code Playgroud)
Han*_*Gay 211
我只是假设这gitk
不是必需的.在那种情况下,试试吧git show --name-only <sha>
.
Tux*_*ude 172
我个人使用--stat和--oneline与show命令的组合:
git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD
Run Code Online (Sandbox Code Playgroud)
如果您不喜欢/想要添加/删除统计信息,则可以使用--name-only替换--stat
git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD
Run Code Online (Sandbox Code Playgroud)
Ind*_*ath 71
你也可以
git log --name-only
Run Code Online (Sandbox Code Playgroud)
您可以浏览各种提交,提交消息和更改的文件.
输入q以获取提示.
lun*_*dov 67
最近我需要在两次提交之间列出所有已更改的文件.所以我使用了这个(也是*nix特定的)命令
git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq
Run Code Online (Sandbox Code Playgroud)
更新:或者正如Ethan在下面指出的那样
git diff --name-only START_COMMIT..END_COMMIT
Run Code Online (Sandbox Code Playgroud)
使用--name-status
还将包括每个文件旁边的更改(添加,修改,删除等)
git diff --name-status START_COMMIT..END_COMMIT
Run Code Online (Sandbox Code Playgroud)
VaT*_*aTo 59
最简单的形式:
git show --stat (hash)
这更容易记住,它将为您提供所需的所有信息.
如果您真的只想要文件的名称,可以添加--name-only
选项.
git show --stat --name-only (hash)
tak*_*hin 47
我经常使用更改的别名.设置:
git config --global alias.changed 'show --pretty="format:" --name-only'
Run Code Online (Sandbox Code Playgroud)
然后:
git changed (lists files modified in last commit)
git changed bAda55 (lists files modified in this commit)
git changed bAda55..ff0021 (lists files modified between those commits)
Run Code Online (Sandbox Code Playgroud)
类似的命令可能有用:
git log --name-status --oneline (very similar, but shows what actually happened M/C/D)
git show --name-only
Run Code Online (Sandbox Code Playgroud)
vqu*_*ans 38
使用标准的git diff命令(也适用于脚本):
git diff --name-only <sha>^ <sha>
Run Code Online (Sandbox Code Playgroud)
如果您还想要更改文件的状态:
git diff --name-status <sha>^ <sha>
Run Code Online (Sandbox Code Playgroud)
这适用于合并提交.
Pra*_*790 37
列出特定提交上更改的文件:
git show --pretty=%gd --stat <commit_id>
Run Code Online (Sandbox Code Playgroud)
列出最近提交时更改的文件:
git show --pretty=%gd --stat
Run Code Online (Sandbox Code Playgroud)
alp*_*989 34
使用
git log --name-status
Run Code Online (Sandbox Code Playgroud)
这将显示提交ID,消息,更改的文件以及是否已修改,创建,添加或删除.有点一对一的命令.
Ole*_*rin 23
git show --name-only a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Run Code Online (Sandbox Code Playgroud)
Ali*_*eza 19
好的,有几种方法可以显示特定提交中的所有文件...
要减少信息并仅显示已提交文件的名称,您只需添加--name-only
或--name-status
标记...,这些标志只显示与您之前提交的文件名不同的文件名...
所以你可以用git diff
后面的--name-only
两个提交哈希来做<sha0> <sha1>
,如下所示:
git diff --name-only 5f12f15 kag9f02
Run Code Online (Sandbox Code Playgroud)
我还创建了下面的图像,以显示在这些情况下要经历的所有步骤:
Pio*_*rak 17
我用它来获取合并提交中更改的文件列表
\n\xce\xbb git log -m -1 --name-only --pretty="format:"\nconfigs/anotherconfig.xml\nconfigs/configsInRepo.xml\n
Run Code Online (Sandbox Code Playgroud)\n或者
\n\xce\xbb git log -m -1 --name-status --pretty="format:"\nA configs/anotherconfig.xml\nM configs/configsInRepo.xml\n
Run Code Online (Sandbox Code Playgroud)\n
小智 15
我用它来获取两个变更集之间的修改文件列表:
git diff --name-status <SHA1> <SHA2> | cut -f2
Run Code Online (Sandbox Code Playgroud)
Koe*_*en. 13
还有git whatchanged
,这比水平更低git log
NAME
git-whatchanged - Show logs with difference each commit introduces
Run Code Online (Sandbox Code Playgroud)
它输出提交摘要及其下面的文件列表及其模式,如果有,则添加(A
),删除(D
)或修改(M
);
$ git whatchanged f31a441398fb7834fde24c5b0c2974182a431363
Run Code Online (Sandbox Code Playgroud)
会给出类似的东西:
commit f31a441398fb7834fde24c5b0c2974182a431363
Author: xx <xx@xx.nl>
Date: Tue Sep 29 17:23:22 2015 +0200
added fb skd and XLForm
:000000 100644 0000000... 90a20d7... A Pods/Bolts/Bolts/Common/BFCancellationToken.h
:000000 100644 0000000... b5006d0... A Pods/Bolts/Bolts/Common/BFCancellationToken.m
:000000 100644 0000000... 3e7b711... A Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h
:000000 100644 0000000... 9c8a7ae... A Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m
:000000 100644 0000000... bd6e7a1... A Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h
:000000 100644 0000000... 947f725... A Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m
:000000 100644 0000000... cf7dcdf... A Pods/Bolts/Bolts/Common/BFDefines.h
:000000 100644 0000000... 02af9ba... A Pods/Bolts/Bolts/Common/BFExecutor.h
:000000 100644 0000000... 292e27c... A Pods/Bolts/Bolts/Common/BFExecutor.m
:000000 100644 0000000... 827071d... A Pods/Bolts/Bolts/Common/BFTask.h
...
Run Code Online (Sandbox Code Playgroud)
我知道这个答案并没有真正匹配"没有多余的信息."但我仍然认为这个列表比文件名更有用.
小智 11
如果您只想在上次提交中更改文件列表,请使用简单的一行命令:
git diff HEAD~1 --name-only
Run Code Online (Sandbox Code Playgroud)
Jig*_*sar 11
尝试使用此命令获取名称并更改行数
git show --stat <commit-hash>
Run Code Online (Sandbox Code Playgroud)
只显示文件名
git show --stat --name-only <commit-hash>
Run Code Online (Sandbox Code Playgroud)
获取最后的提交哈希,然后尝试此命令
git log -1
Run Code Online (Sandbox Code Playgroud)
带有显示文件名和文件状态的最后提交修改,创建或删除
git log -1 --oneline --name-status <commit-hash>
Run Code Online (Sandbox Code Playgroud)
或全部
git log
Run Code Online (Sandbox Code Playgroud)
有关更高级的git日志信息,请阅读本文
https://devhints.io/git-log-format
use*_*409 10
也许我错过了有人提到如果你想使用“log”命令来增加日志 x 以前的提交以包含受影响的文件的名称,然后在末尾添加 --name-only 。
所以:
git log -n3
Run Code Online (Sandbox Code Playgroud)
查看最近 3 次提交的最后评论。
git log -n3 --name-only
Run Code Online (Sandbox Code Playgroud)
查看最近 3 次提交中生效的注释和文件。
小智 8
显示日志.
COMMIT可以为空("")或sha-1或sha-1缩短.
git log COMMIT -1 --name-only
Run Code Online (Sandbox Code Playgroud)
这将仅列出文件,对进一步处理非常有用.
git log COMMIT -1 --name-only --pretty=format:"" | grep "[^\s]"
Run Code Online (Sandbox Code Playgroud)
列出提交中更改的文件:
git diff --name-only SHA1^ SHA1
Run Code Online (Sandbox Code Playgroud)
这不显示日志消息,额外换行符或任何其他混乱.这适用于任何提交,而不仅仅是当前提交.不知道为什么它没有相当尚未提及,所以我将它添加.
找到了一个完美的答案:
git show --name-status --oneline <commit-hash>
Run Code Online (Sandbox Code Playgroud)
所以我可以知道
which files were just modified M
Which files were newly added , A
Which files were deleted , D
Run Code Online (Sandbox Code Playgroud)
只有文件列表(甚至没有提交消息):
git show --name-only --pretty=format:
Run Code Online (Sandbox Code Playgroud)
例如,在编辑器中打开所有更改的文件:
git show --name-only --pretty=format: | xargs "$EDITOR"
Run Code Online (Sandbox Code Playgroud)
" git show --stat
"(感谢Ryan)和一些sed命令的组合应该为您修剪数据:
git show --stat <SHA1> | sed -n "/ [\w]\*|/p" | sed "s/|.\*$//"
Run Code Online (Sandbox Code Playgroud)
这将只生成修改过的文件列表.
有一个简单的技巧可以作为文件列表查看,只需:
在哈希后添加即可.
git show 9d3a52c474:
Run Code Online (Sandbox Code Playgroud)
然后你可以钻进来,
git show 9d3a52c474:someDir/someOtherDir
Run Code Online (Sandbox Code Playgroud)
如果您点击文件,您将获得该文件的原始版本; 如果你只是寻找一个很好的参考或关键代码片段(差异可以使一切变得一团糟),有时你会想要的,
git show 9d3a52c474:someDir/someOtherDir/somefile
Run Code Online (Sandbox Code Playgroud)
这种方法的唯一缺点是它不容易显示文件树.
归档时间: |
|
查看次数: |
1380216 次 |
最近记录: |