如何获取从master分支点创建分支以来所有修改的文件列表
解答
这个需求完全可以实现,属于Git原生支持的常规操作,不需要额外记切分支时的master提交哈希——Git本身会自动记录分支间的分叉点。
可用命令
如果你当前就在要查询的目标分支上
直接执行下面的命令,就能拿到从分支创建到现在所有修改过的文件列表:
git diff --name-only $(git merge-base HEAD master) HEAD
如果需要同时显示每个文件是新增、修改还是删除,把--name-only换成--name-status就行:
git diff --name-status $(git merge-base HEAD master) HEAD
还有个更短的三点写法,效果完全一样,注意必须是三个点,写错成两个点结果就不对了:
git diff --name-only master...HEAD
如果你现在在别的分支,想查指定分支的变更文件
把命令里的HEAD换成你要查的分支名就行,比如查feature/pay分支的修改:
git diff --name-only $(git merge-base feature/pay master) feature/pay
注意事项
git merge-base HEAD master的作用就是算出当前分支和master的最近共同祖先,也就是你当初从master切出当前分支时,master所在的那个提交节点,刚好是你要的对比基准,完全不会拿master的最新HEAD来对比- 千万别写成两个点的
git diff master..HEAD,这个写法是直接拿当前分支和master最新提交比,结果不符合要求 - 要是你仓库的默认主分支叫
main不叫master,把命令里的master换成main就可以 - 怕基准找错的话,可以先单独跑
git merge-base HEAD master拿到提交哈希,再用git show <哈希值>看提交内容,确认是你切分支时的master节点再查文件列表就行
内容的提问来源于stack exchange,提问作者Elliott
相关产品推荐
相关产品推荐

