git log suppress refs匹配指定的模式

时间:2014-08-30 17:17:54

标签: regex git git-log

我经常使用以下git-log命令:

git log --oneline --graph --decorate --all

这个命令对我来说很完美,只有一个例外。我在refs中保留了一组refs/arch/我希望保留(" arch"代表"存档"),但我不想看到他们每次看我的git日志。如果他们是现有branchtag的祖先,我不介意他们出现,但我真的不希望看到本来不会提交的一系列提交显示在git日志中,但事实上它们位于给定refs/arch/* ref的提交历史记录中。

例如,在下图中,左侧是我在运行git log --oneline --graph --decorate --all时所看到的内容的图示。如您所见,如果refs/arch/2不存在,则ref引用的提交不会显示在日志中。 (假设左侧图像中没有显示refs。)现在,右侧是两个备选日志图的图示,其中任何一个都是完全没问题。我不介意看到任何与refs/arch/*匹配的内容,只要它在branchtag的提交历史记录中。但是,在下图中,我绝对不希望看到refs/arch/2引用的提交。

Illustration of question

如何修改git-log命令以在插图中描述的任何一种意义上抑制refs/arch/*

1 个答案:

答案 0 :(得分:6)

你想要的是:

git log --oneline --graph --decorate --exclude 'refs/arch/*' --all

--exclude选项为new in git 1.9.0


从git-log手册页:

  

--exclude=<glob-pattern>

     
    

不要在 <glob-pattern> 中添加与下一个--all--branches--tags--remotes或{{ 1}}否则会考虑。重复此选项会累积排除模式,直到下一个--glob--all--branches--tags--remotes(其他选项或参数不会清除累积)模式)。

         

应用于--glob optionrefs/headsrefs/tags时,所提供的模式不应以refs/remotes--branches--tags开头,分别在应用于--remotesrefs/时,必须以--glob开头。如果打算使用尾随--all,则必须明确指定。

  

如果您使用某种Ubuntu,可以从the Ubuntu Git Maintainers team ppa升级git。

  1. /*
  2. sudo add-apt-repository ppa:git-core/ppa
  3. sudo apt-get update