有没有办法列出所有修改了特定文件的提交?
有什么方法可以列出所有改变了特定文件的提交?--follow
对某一特定文件有效
git log --follow -- filename
与其他解决方案的区别
请注意,其他解决方案包括 git log path
(不含 --follow
). 如果你想追踪例如在 目录但 当文件被重新命名时,就会绊倒 遂用 --follow filename
).
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.
我一直在仔细研究这个问题,但所有这些答案似乎并不能真正显示所有分支的所有提交。
以下是我通过使用gitk编辑视图选项得出的结果。这让我看到了 一个文件的所有提交 无论分支、本地、重新记录和远程。
gitk --all --first-parent --remotes --reflog --author-date-order -- filename
它也适用于 git log
:
git log --all --first-parent --remotes --reflog --author-date-order -- filename
使用下面的命令来获取特定文件的提交。
git log -p filename
它应该是简单的 git log <somepath>
; 查看manpage (git-log(1)
).
我个人喜欢用 git log --stat <path>
这样我就可以看到每次提交对文件的影响。
或者(从 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.comlist-some-useful-git-commands
正如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
只对单个文件有效。
如果你想用 --跟踪已删除的文件 在之前的提交中使用
git log --follow -- filename
如果你想查看所有的提交,由 filename
和 不由 filepath
,使用。
git log --all -- '*.wmv'
如果你想查看所有分支中修改过文件的提交,用这个。
git log --follow --all <filepath>
使用 git log --all <filename>
以查看影响 <filename>
中的所有分支。
如果您希望查看在提交中对某一特定文件所做的所有修改(而不仅仅是对文件本身的修改),您可以将 --full-diff
:
git log -p --full-diff [branch] -- <path>
gitk <path_to_filename>
假设已经安装了软件包 "gitk"。
如果还没有安装,请这样做。
sudo apt-get install gitk
然后试试上面的命令 这是为Linux设计的... 如果 Linux 用户想要一个 GUI,它可能会有帮助。
要想获得提交哈希值的列表,请使用以下命令 git rev-list
git rev-list HEAD <filename>
输出。
b7c4f0d7ebc3e4c61155c76b5ebc940e697600b1
e3920ac6c08a4502d1c27cea157750bd978b6443
ea62422870ea51ef21d1629420c6441927b0d3ea
4b1eb462b74c309053909ab83451e42a7239c0db
4df2b0b581e55f3d41381f035c0c2c9bd31ee98d
这意味着有5个提交触及了这个文件。这是按时间顺序逆向排列的,所以列表中的第一个提交者是 b7c4f0d7
是最新的一个。
在Linux上,你可以使用gitk来实现。
可以用 "sudo apt-get install git-gui gitk "来安装。它可以通过 "gitk <Filename> "来查看某个特定文件的提交。
# 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>