是否有一种方法可以列出更改特定文件的所有提交?
当前回答
Git日志路径应该做你想做的。从git日志手册页:
[--] <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 --follow --all <filepath>
——follow适用于特定的文件
git log --follow -- filename
与给出的其他解的区别
注意,其他解决方案包括git日志路径(没有——follow)。如果你想跟踪目录中的变化,但是当文件被重命名时(因此使用——follow filename),这种方法很方便。
使用下面的命令获取特定文件的提交:
git log -p filename
要获得一个提交哈希列表,使用git rev-list:
git rev-list HEAD <filename>
输出:
b7c4f0d7ebc3e4c61155c76b5ebc940e697600b1
e3920ac6c08a4502d1c27cea157750bd978b6443
ea62422870ea51ef21d1629420c6441927b0d3ea
4b1eb462b74c309053909ab83451e42a7239c0db
4df2b0b581e55f3d41381f035c0c2c9bd31ee98d
这意味着有五次提交涉及到该文件。它是按倒序排列的,所以列表中的第一个提交b7c4f0d7是最近的一个。
我一直在仔细研究这个问题,所有这些答案似乎并没有真正向我展示所有分支的所有提交。
以下是我通过摆弄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添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别