如何列出HEAD(提交B)之后修改指定文件的所有分支提交
两种场景下筛选修改特定文件的提交命令
当前HEAD指向提交B,需筛选出修改过file1.txt、提交时间晚于B且包含B本身的提交,以下是两种场景的实现命令:
场景1:仅包含B的后代提交(排除H这类非B分支的晚提交)
此场景只保留以B为祖先的提交(即B所在分支的后续提交),排除其他分支中时间晚于B但不属于B后代的提交(如示例中的H)。
使用命令:
git log --oneline --follow --since="$(git show -s --format=%ci B)" -- file1.txt B --not $(git rev-parse B^@)
参数说明:
--oneline:简化日志输出格式,每行显示提交哈希和提交信息--follow:跟踪文件的重命名历史,确保修改过该文件(含改名后)的提交都被列出--since="$(git show -s --format=%ci B)":仅保留提交时间晚于B的记录B --not $(git rev-parse B^@):仅包含B及其所有后代提交(排除B的父提交及更早的历史)-- file1.txt:指定仅筛选修改过该文件的提交
场景2:包含所有时间晚于B的符合条件提交(含H这类其他分支的提交)
此场景会遍历所有分支,只要提交时间晚于B且修改过file1.txt,无论是否属于B的后代都将被列出(如示例中的H)。
使用命令:
git log --oneline --follow --all --since="$(git show -s --format=%ci B)" -- file1.txt
参数说明:
--all:遍历仓库中所有分支的提交历史,确保不会遗漏其他分支的符合条件提交- 其余参数含义同场景1
内容的提问来源于stack exchange,提问作者Tryer
相关产品推荐
相关产品推荐

