如何过滤git log输出中的非master分支提交记录
如何过滤git log输出中的非master分支提交记录
嘿,我太懂这种被无关分支提交打乱分析节奏的烦躁了!其实你在master分支执行git log --decorate时看到其他分支的提交,是因为那些分支的提交历史和master有共享的祖先(比如是从master切出去开发的),Git默认会展示所有能追溯到当前分支的提交链。不过别担心,这几个办法能帮你把输出变干净:
只追踪master的线性提交历史:用
git log --decorate --first-parent命令。这个参数会让Git只沿着master分支的「第一父提交」走——简单说就是,只会显示master本身的线性提交,以及合并其他分支时的合并提交,不会展示被合并分支里的单个提交细节,瞬间就能过滤掉那些分支的零散提交。严格排除所有其他本地分支的提交:如果想彻底只看master独有的提交,可以用这个命令:
git log --decorate master --not $(git for-each-ref --format='%(refname)' refs/heads/ | grep -v master)它的作用是:先列出所有本地分支,排除master后,让Git只展示master分支里不属于这些分支的提交。要是你只想排除某几个特定分支,也可以更灵活地写:
git log --decorate master ^feature-branch ^bugfix-branch,把不想看到的分支用^前缀列出来就行。如果只是不想看到分支装饰标签:要是你不介意看到提交,但烦那些分支名称的装饰,可以调整装饰格式,比如用
git log --decorate=short,它只会显示最关键的装饰信息,不会把所有分支标签都列出来。
备注:内容来源于stack exchange,提问作者gtalton007
相关产品推荐
相关产品推荐

