如何仅使用git log显示更改的文件名?

fan*_*ard 101 git

它是能够显示更改后的文件名只能用git log

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)

简而言之.

  • 即使使用“git show”命令,“--name-only”参数也可以使用。 (2认同)

xer*_*ero 44

我想你可以用--name-only旗帜.就像是:

git log 73167b96 --pretty="format:" --name-only

我个人git show用于查看提交中更改的文件

git show --pretty="format:" --name-only 73167b96

(73167b96可以是任何提交/标记名称)

  • 这个解决方案非常好,只有没有作者,日期或提交消息信息的文件列表 (3认同)

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,2sort 的选项使其按文件路径而不是更改类型(A,M,D,)排序.

  • 这实际上是实际提供“仅文件名”问题答案的唯一答案。 (4认同)

jma*_*eli 7

如果您需要文件名,例如:

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命令排除(-vparam)以7个符号开头的每一行(这是我git log命令的git hash的长度)后跟空格.因此它会过滤掉每个git hash message行,只留下带有文件名的行.

一个有用的改进是追加uniq删除重复的行,所以它看起来如下:

git log --name-only --oneline | grep -v '.{7} ' | uniq

  • 在OSX bash shell中,必须在括号前放置反斜杠.我还添加了行开始匹配和空间匹配器."git show --name-only --oneline | grep -v'^.\ {7 \}\s'" (2认同)