使用--squash选项添加Git subtree后,如何查看其提交历史?
查看Git Squash子树的隐藏提交历史
当然可以查看这些被squash隐藏的子树历史,这里有两个实用方法:
用git subtree自带的log命令
直接用git subtree log命令指定子树路径,就能直接输出该子树的完整提交历史,包括被squash压缩的那些:git subtree log --prefix=你的子树路径这个命令是专门为子树场景设计的,用起来最直接。
拆分出子树历史到独立分支
如果需要更灵活地查看或操作子树历史,可以先把子树的所有提交拆分到一个临时分支,再查看该分支的日志:- 拆分子树到新分支(比如命名为
subtree-history):git subtree split --prefix=你的子树路径 -b subtree-history - 查看这个分支的提交历史:
git log subtree-history
拆分完成后,你还可以用这个分支做其他操作,比如推送到远程仓库,或者对比提交差异。
- 拆分子树到新分支(比如命名为
之所以用--squash添加子树后主分支看不到完整历史,是因为这个选项会把子树的所有历史压缩成一个单独的合并提交写入主分支,但子树的原始提交并没有被删除,只是存在本地仓库的对象数据库里,没有被分支引用而已,所以上面的方法能找到这些隐藏的提交。
内容的提问来源于stack exchange,提问作者Alberto López
相关产品推荐
相关产品推荐

