如何按时间查看本地Git全提交全分支指定文件改动 及git log命令是否适用
问题结论:不能完全保证
git log -p --all some_file 中的 --all 参数确实会遍历本地仓库所有引用下的提交,包括所有分支、标签、暂存记录、其他自定义引用,不会漏过任何引用可达的提交节点。但是默认的 git log 查询文件历史时会开启历史简化机制,刚好会漏掉你要排查的「合并时被误删的改动」场景。
缺省参数的局限性
- git默认会自动跳过那些「对该文件的改动最终没有保留到后续合并版本」的提交,如果你要找的是被合并操作意外覆盖/删除的改动,这些改动对应的提交刚好会被默认的简化逻辑过滤掉,不会出现在输出结果里。
- 遇到有冲突解决的合并提交时,默认
git log也不会展示合并提交本身对该文件的修改,你没法直接定位是哪次合并操作删掉了对应改动。
可以覆盖全场景的修正命令
加上两个参数就能满足你的需求:
git log -p --all --full-history -m some_file
参数说明:
--full-history:关闭默认的历史简化逻辑,强制输出所有修改过该文件的提交,不管改动最终有没有被保留到后续版本-m:强制拆分展示合并提交的diff,你可以直接看到合并操作对该文件做了什么修改,快速定位误删改动的合并节点
只要你要找的提交确实还存在于本地仓库的某个引用可达的位置,上面的命令就一定能查到对应的修改记录。
内容的提问来源于stack exchange,提问作者safetyduck
相关产品推荐
相关产品推荐

