如何列出所有修改了特定文件的提交?

问题描述 投票:791回答:16

有没有办法列出所有修改了特定文件的提交?

git commit
16个回答
1095
投票

有什么方法可以列出所有改变了特定文件的提交?--follow 对某一特定文件有效

git log --follow -- filename

与其他解决方案的区别

请注意,其他解决方案包括 git log path (不含 --follow). 如果你想追踪例如在 目录当文件被重新命名时,就会绊倒 遂用 --follow filename).


122
投票

git log path 应该会如你所愿。从 git log 男人:

[--] <path>…

Show only commits that affect any of the specified paths. To prevent confusion with 
options and branch names, paths may need to be prefixed with "-- " to separate them
from options or refnames.

66
投票

我一直在仔细研究这个问题,但所有这些答案似乎并不能真正显示所有分支的所有提交。

以下是我通过使用gitk编辑视图选项得出的结果。这让我看到了 一个文件的所有提交 无论分支、本地、重新记录和远程。

gitk --all --first-parent --remotes --reflog --author-date-order -- filename

它也适用于 git log:

git log --all --first-parent --remotes --reflog --author-date-order -- filename

43
投票

使用下面的命令来获取特定文件的提交。

git log -p filename

37
投票

它应该是简单的 git log <somepath>; 查看manpage (git-log(1)).

我个人喜欢用 git log --stat <path> 这样我就可以看到每次提交对文件的影响。


19
投票

或者(从 Git 1.8.4 开始),也可以只获取所有修改了特定的 部分 的文件。你可以通过传递起始行和结束行号来获得这个结果。

返回的结果是修改这个特定部分的提交列表。这个命令是这样的

git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>

其中 upperLimitstart_line_numberlowerLimitending_line_number

更多信息 - https:/www.techpurohit.comlist-some-useful-git-commands


17
投票

正如jackrabb1t指出的, --follow 的功能更强大,因为它在重命名之后还能继续列出历史记录。所以,如果你要找一个目前不在同一路径的文件,或者一个在多次提交中被重命名的文件,--follow 会跟踪它。

如果你想看到命名路径的变化,这可能是一个更好的选择。

git log --follow --name-status -- <path>

但如果你想要一个更紧凑的列表,只列出重要的内容, --follow会跟踪它。

git log --follow --name-status --format='%H' -- <path>

甚至

git log --follow --name-only --format='%H' -- <path>

缺点是 --follow 只对单个文件有效。


10
投票

如果你想用 --跟踪已删除的文件 在之前的提交中使用

git log --follow -- filename

9
投票

如果你想查看所有的提交,由 filename不由 filepath,使用。

git log --all -- '*.wmv'

8
投票

如果你想查看所有分支中修改过文件的提交,用这个。

git log --follow --all <filepath>

6
投票

使用 git log --all <filename> 以查看影响 <filename> 中的所有分支。


6
投票

如果您希望查看在提交中对某一特定文件所做的所有修改(而不仅仅是对文件本身的修改),您可以将 --full-diff:

git log -p --full-diff [branch] -- <path>

4
投票
gitk <path_to_filename>

假设已经安装了软件包 "gitk"。

如果还没有安装,请这样做。

sudo apt-get install gitk

然后试试上面的命令 这是为Linux设计的... 如果 Linux 用户想要一个 GUI,它可能会有帮助。


2
投票

要想获得提交哈希值的列表,请使用以下命令 git rev-list

 git rev-list HEAD <filename>

输出。

b7c4f0d7ebc3e4c61155c76b5ebc940e697600b1
e3920ac6c08a4502d1c27cea157750bd978b6443
ea62422870ea51ef21d1629420c6441927b0d3ea
4b1eb462b74c309053909ab83451e42a7239c0db
4df2b0b581e55f3d41381f035c0c2c9bd31ee98d

这意味着有5个提交触及了这个文件。这是按时间顺序逆向排列的,所以列表中的第一个提交者是 b7c4f0d7 是最新的一个。


1
投票

在Linux上,你可以使用gitk来实现。

可以用 "sudo apt-get install git-gui gitk "来安装。它可以通过 "gitk <Filename> "来查看某个特定文件的提交。


1
投票
# Shows commit history with patch
git log -p -<no_of_commits> --follow <file_name>

# Shows brief details like "1 file changed, 6 insertions(+), 1 deletion(-)"
git log --stat --follow <file_name>

参考文献

© www.soinside.com 2019 - 2024. All rights reserved.