2014-08-30 8 views
6

ich regelmäßig den folgenden git-log Befehl verwenden:git log Unterdrückungs-Refs Muster angegeben Matching

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

Der Befehl ist perfekt für mich, mit einer Ausnahme. Ich pflege eine Reihe von refs in refs/arch/, die ich behalten möchte ("Arch" steht für "Archiv"), aber ich will sie nicht jedes Mal sehen, wenn ich mein Git Protokoll ansehe. Es stört mich nicht, wenn sie ein Vorfahre eines existierenden 10 oder tag sind, aber ich möchte wirklich keine Serie von Commits sehen, die sonst nicht erscheinen würden im Git Log aber für die Tatsache, dass sie sind in der Commit-Geschichte eines gegebenen refs/arch/*ref.

Zum Beispiel, in der Abbildung unten, ist die linke Seite eine Illustration von dem, was ich gerade sehe, wenn ich git log --oneline --graph --decorate --all laufen lasse. Wie Sie sehen können, wird das Commit, auf das sich refs/arch/2 bezieht, nicht in dem Protokoll angezeigt, wenn das ref nicht vorhanden war. (Nehmen wir an, es gibt keine refs das sind nicht in der linken Seite Bild gezeigt.) Nun, die rechte Seite ist eine Illustration von zwei alternativen Log-Graphen, von denen jede wäre völlig in Ordnung. Ich habe nichts dagegen, etwas zu sehen refs/arch/* solange es in der Commit-Geschichte von branch oder tag ist. Aber auf dem Bild unten möchte ich definitiv nicht das Commit sehen, auf das sich refs/arch/2 bezieht.

Illustration of question

Wie kann mein git-log Befehl geändert werden refs/arch/* in entweder der Sinne in der Abbildung dargestellt zu unterdrücken?

+0

Haben Sie ohne die '--all' Option den gleichen Befehl versucht? –

+0

@ JoëlSalamin Ja, aber ohne '--all' würde es' dev' oder 'dev ~ 1' nicht anzeigen (wenn ich' master' ausgecheckt habe.) – synaptik

+0

Ok du hast Recht, und was ist mit dem '' kurz 'param' zur' --decorate' Option? –

Antwort

6

Was Sie wollen, ist:

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

Die --exclude Option ist new in git 1.9.0.


Aus dem git-log Manpage:

--exclude=<glob-pattern>

nicht Refs sind Sie <glob-pattern> passend, dass das nächste --all, --branches, --tags, --remotes oder --glob würde ansonsten überlegen. Wiederholungen dieser Option akkumulieren Ausschlussmuster bis zum nächsten --all, --branches, --tags, --remotes oder --glob option (andere Optionen oder Argumente löschen nicht akkumulierte Muster).

Die Muster gegeben sollten mit refs/heads, refs/tags nicht beginnen, oder refs/remotes wenn auf --branches angewendet, --tags oder --remotes sind, und sie müssen mit refs/ beginnen, wenn zu --glob oder --all angewendet. Wenn ein nachlaufender /* vorgesehen ist, muss dies explizit angegeben werden.


Wenn Sie auf einige Geschmack von Ubuntu sind Sie git von the Ubuntu Git Maintainers team ppa aktualisieren.

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