是否有一种方法可以列出更改特定文件的所有提交?


当前回答

它应该像git log <somepath>;查看manpage (git-log(1))。

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

其他回答

要获得一个提交哈希列表,使用git rev-list:

 git rev-list HEAD <filename>

输出:

b7c4f0d7ebc3e4c61155c76b5ebc940e697600b1
e3920ac6c08a4502d1c27cea157750bd978b6443
ea62422870ea51ef21d1629420c6441927b0d3ea
4b1eb462b74c309053909ab83451e42a7239c0db
4df2b0b581e55f3d41381f035c0c2c9bd31ee98d

这意味着有五次提交涉及到该文件。它是按倒序排列的,所以列表中的第一个提交b7c4f0d7是最近的一个。

# 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>

参考

如果您试图跟踪在前一次提交中删除的文件,请使用

git log --follow -- filename

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

以下是我通过摆弄gitk编辑视图选项得到的结果。这显示了一个文件的所有提交,而不考虑分支、本地、reflog和远程。

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

它也适用于git日志:

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

获取特定文件的所有提交:

git rev-list HEAD—oneline FileName

例如

git rev-list HEAD—oneline index.html

输出

7a2bb2f update_index_with_alias
6c03e56 update_changes
e867142 Revert "add_paragraph"

参见gif图片