列出特定文件的所有提交

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

--follow适用于特定的文件

 git log --follow filename 

区别于其他解决scheme

请注意,其他解决scheme包括git log path (不带--follow )。 如果你想跟踪目录中的变化,那么这种方法是很方便的,但是当文件被重命名时(因此使用 – --follow filename ),它会发生一些变化。

git log path应该做你想做的。 从git log man :

 [--] <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. 

应该像git log <somepath>一样简单,检查手册页( git-log(1) )。

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

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

 git log -p filename 

我一直在密切关注这一点,所有这些答案似乎并没有真正向我展示所有分支机构的所有承诺。

这是我用gitk编辑视图选项搞乱的。 这显示了我所有提交文件,无论分支,本地,reflog和远程。

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

正如jackrabb1t所指出的那样, --follow继续列出重命名/移动之外的历史logging, --follow更加强大。 因此,如果您正在查找当前不在同一path中的文件或者在各种提交中已经重命名的文件,–follow将跟踪它。

如果要显示名称/path更改,这可能是更好的select:

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

但是,如果你想要一个更紧凑的列表,只有重要的事情:

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

甚至

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

缺点是 – --follow只适用于单个文件。

如果您正在尝试 – 关注在之前的提交用途中删除的文件

 git log --follow -- filename 

另外(既然git 1.8.4),也可以只获取已经改变了文件特定部分的所有提交。 你可以通过传递起始行和结束行号来获得。

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

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

其中lowerLimitstart_line_numberlowerLimitending_line_number

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

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

 git log --follow --all <filepath> 
 gitk <path_to_filename> 

假设已经安装了“gitk”包。 如果没有安装,请执行此操作

 sudo apt-get install gitk 

然后尝试上面的命令。 这是Linux的..它可能会帮助Linux用户,如果他们想要GUI。

如果你想查找所有提交的filename不是 filename filepath

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

在Linux中,你可以使用gitk。 它可以使用“sudo apt-get install git-gui gitk”进行安装。 它可以用来查看特定文件的提交“gitk”

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

参考