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


当前回答

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

git log --follow --all <filepath>

其他回答

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

返回的结果将是修改该特定部分的提交列表。命令如下:

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

其中upperLimit是start_line_number, lowerLimit是ending_line_number

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

——follow适用于特定的文件

git log --follow -- filename

与给出的其他解的区别

注意,其他解决方案包括git日志路径(没有——follow)。如果你想跟踪目录中的变化,但是当文件被重命名时(因此使用——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

如果你希望看到提交中对特定文件的所有更改(而不仅仅是对文件本身的更改),你可以传递——full-diff:

git log -p --full-diff [branch] -- <path>
# 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>

参考