如何使用Git查询所有远程分支中指定文件的全部变更记录
Git查询指定文件全远程分支变更及关联分支操作方法
- 第一步:同步最新远程分支元数据
执行命令拉取所有远程分支的最新信息,清理本地已失效的远程分支缓存:git fetch origin --prune - 第二步:查询该文件在所有远程分支的全部变更commit
执行以下命令,会输出所有远程分支上该文件的变更记录,包含commit哈希、提交说明:git log --all --remotes --follow --oneline -- <目标文件相对路径>
参数说明:--all --remotes:查询范围覆盖所有远程分支,排除本地分支干扰--follow:跟踪文件重命名历史,避免文件改名后丢失更早的变更记录--oneline:精简输出信息,方便快速浏览
- 第三步:查询单个commit对应的关联远程分支
拿到commit哈希后,执行以下命令即可查看该commit存在于哪些远程分支中:git branch -r --contains <commit哈希值> - 第四步:一次性获取所有修改过该文件的远程分支
不想逐个commit查询的话,直接执行以下聚合命令,自动去重输出所有修改过目标文件的远程分支列表:for commit in $(git rev-list --all --remotes -- <目标文件相对路径>); do git branch -r --contains $commit; done | sort | uniq - 额外需求:筛选出还未合并到develop分支的相关远程分支
如果你需要确认哪些修改了该文件的分支还没合并到develop,避免后续合并冲突,执行以下命令:git branch -r --no-merged origin/develop | grep -xFf <(for commit in $(git rev-list --all --remotes -- <目标文件相对路径>); do git branch -r --contains $commit; done | sort | uniq)
注意:所有命令中的
<目标文件相对路径>需要替换为文件相对于仓库根目录的路径,路径包含空格的话需要用引号包裹。
内容的提问来源于stack exchange,提问作者David Prusa
相关产品推荐
相关产品推荐

