fan*_*ard 150
感谢您的回答,@ mvp,@ xero,我根据您的两个答案获得了我想要的内容.
git log --name-only
Run Code Online (Sandbox Code Playgroud)
要么
git log --name-only --oneline
Run Code Online (Sandbox Code Playgroud)
简而言之.
xer*_*ero 44
我想你可以用--name-only
旗帜.就像是:
git log 73167b96 --pretty="format:" --name-only
我个人git show
用于查看提交中更改的文件
git show --pretty="format:" --name-only 73167b96
(73167b96可以是任何提交/标记名称)
mvp*_*mvp 26
这几乎可以满足您的需求:
git log --stat --oneline
Run Code Online (Sandbox Code Playgroud)
提交ID +短一行仍然存在,然后是该提交的已更改文件列表.
gMa*_*ale 24
我在这里偶然发现没有"git log"限制的类似答案.这里的答案没有给我我需要的东西但是这样做我会添加它以防其他人发现它有用:
git diff --name-only
Run Code Online (Sandbox Code Playgroud)
您还可以将其与标准提交指针结合使用,以查看自特定提交以来发生了哪些更改:
git diff --name-only HEAD~3
git diff --name-only develop
git diff --name-only 5890e37..ebbf4c0
Run Code Online (Sandbox Code Playgroud)
这简洁地提供了仅适用于脚本编写的文件名.例如:
git diff --name-only develop | while read changed_file; do echo "This changed from the develop version: $changed_file"; done
#OR
git diff --name-only develop | xargs tar cvf changes.tar
Run Code Online (Sandbox Code Playgroud)
Alf*_*gon 11
现在我使用以下内容来获取当前分支已更改的文件列表,将其与master进行比较(compare-to分支很容易更改):
git log --oneline --pretty="format:" --name-only master.. | awk 'NF' | sort -u
Run Code Online (Sandbox Code Playgroud)
之前,我曾经依赖于此:
git log --name-status <branch>..<branch> | grep -E '^[A-Z]\b' | sort -k 2,2 -u
Run Code Online (Sandbox Code Playgroud)
它仅输出文件列表及其状态(添加,修改,删除):
A foo/bar/xyz/foo.txt
M foo/bor/bar.txt
...
Run Code Online (Sandbox Code Playgroud)
-k2,2
sort 的选项使其按文件路径而不是更改类型(A,M,D,)排序.
如果您只需要文件名,例如:
dir/subdir/file1.txt
dir/subdir2/file2.sql
dir2/subdir3/file6.php
Run Code Online (Sandbox Code Playgroud)
(我用作tar命令的源)你还需要过滤掉提交消息.
为了做到这一点,我使用以下命令:
git log --name-only --oneline | grep -v '.{7} '
Grep命令排除(-v
param)以7个符号开头的每一行(这是我git log
命令的git hash的长度)后跟空格.因此它会过滤掉每个git hash message
行,只留下带有文件名的行.
一个有用的改进是追加uniq
删除重复的行,所以它看起来如下:
git log --name-only --oneline | grep -v '.{7} ' | uniq
归档时间: |
|
查看次数: |
75803 次 |
最近记录: |