Wie kann ich eine Liste mit Git-Verzweigungen erhalten, geordnet nach dem letzten Commit?
Möchte ich, um eine Liste aller Filialen in einem Git-repository mit den "frischesten" Zweige an der Spitze, wo die "aktuellsten" - Zweig ist die eine, die begangen wurden, bis vor kurzem (und ist daher eher ein ich will Aufmerksamkeit).
Gibt es eine Möglichkeit, ich kann Git verwenden, um entweder (a) Sortieren Sie die Liste der Branchen, die durch neueste verpflichten, oder (b) eine Liste der Niederlassungen zusammen mit den jeweils letzten commit-Datum, in eine Art von maschinenlesbaren format?
Schlimmsten Fall konnte ich immer laufen git branch
um eine Liste von allen Zweigen, analysieren der Ausgabe, und dann git log -n 1 branchname --format=format:%ci
für jeden, um jeden Zweig die commit-Datum. Aber dieser läuft auf einem Windows-Rechner, wo die Spinnerei ein neues Verfahren ist relativ teuer, so starten die git executable einmal pro Zweig bekommen konnte, langsam, wenn es gibt eine Menge Zweige. Gibt es eine Möglichkeit, dies alles mit einem einzigen Befehl?
git for-each-ref
von Jakub Narębski: Sie können remote-Niederlassungen vorbei refs/remotes/
statt refs/heads/
(oder Sie können pass, Leerzeichen-getrennt); refs/tags/
- tags, oder einfach nur refs/
für alle drei Arten. for-each-ref
! Verwenden Sie direkt die git branch --sort=-committerdate
: siehe meine Antwort unten InformationsquelleAutor der Frage Joe White | 2011-03-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
--sort=-committerdate
Möglichkeit,git for-each-ref
;Auch erhältlich da Git 2.7.0 für
git branch
:Grundlegende Verwendung:
Ergebnis:
Für Fortgeschrittene:
Ergebnis:
InformationsquelleAutor der Antwort Jakub Narębski
Erweitern Jakub Antwort und Joe ' s Tipp, die folgenden Streifen aus dem "refs/heads/" so die Ausgabe zeigt nur den branch-Namen:
InformationsquelleAutor der Antwort Beau Smith
Hier ist der optimale code, verbindet die beiden anderen Antworten:
InformationsquelleAutor der Antwort nikolay
Hier ist ein einfacher Befehl, listet alle Filialen mit den neuesten verpflichtet:
Bestellen per letzten commit verwenden
Quelle: http://git-scm.com/book/en/Git-Branching-Branch-Management
InformationsquelleAutor der Antwort user1682406
Brauchte ich auch Farben, tags und remote-Referenzen ohne Duplikate:
Da zitieren kann hart sein, hier wird der alias für die bash:
InformationsquelleAutor der Antwort estani
Verwende ich die folgenden alias:
recent = "!r(){git for-each-ref --sort=-committerdate refs/heads --format='%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)'|column -ts'|'}; r"
produziert:
Bearbeiten: verwenden Sie '|' zu trennen, Dank @Björn Lindqvist
Update: Hinzugefügt * vor dem current-Zweig, Dank @elhadi
Edit: es wurde ein Fall, in dem der aktuelle Zweig war ein Teilstring von einem anderen Zweig
Bearbeiten: verwenden Sie eine einfachere syntax für den aktuellen Zweig, Dank @Joshua Skrzypek
InformationsquelleAutor der Antwort dimid
Die anderen Antworten nicht zu erlauben scheinen vorbei
-vv
ausführliche Ausgabe.So, hier ist ein one-liner, die möglichen
git branch -vv
durch das commit-Datum, Erhalt von Farbe etc:Wenn Sie zusätzlich möchten, drucken Sie das commit-Datum, können Sie diese version verwenden, stattdessen:
Beispiel-Ausgabe:
Ist es wahrscheinlich besser lesbar in mehrere Zeilen geteilt:
Diese sollten auch mit anderen Argumenten zu
git branch
z.B.-vvr
Liste remote-tracking-branches, oder-vva
Liste sowohl remote-tracking und lokale branches.InformationsquelleAutor der Antwort John Mellor
Ich mag mit einem relativen Datum und die Verkürzung des branch-Namen:
Sodass Sie eine Ausgabe:
Ich empfehle das erstellen einer bash-Datei für das hinzufügen von alle Ihre Lieblings-Aliase und dann gemeinsam das Skript zu Ihrem team. Hier ist ein Beispiel zum hinzufügen von nur dieses eine:
Dann können Sie einfach tun dies, um eine schön formatierte und sortierte Ortsgruppe Liste:
Update:
Tun Sie dies, wenn Sie wollen, Farbstoff:
InformationsquelleAutor der Antwort n8tr
git 2.7 (Q4 2015) vorstellen, Zweig Sortieren mit direkt
git branch
:Sehen commit aa3bc55, commit aedcb7d, commit 1511b22, commit f65f139, ... (23 Sep 2015), commit aedcb7d, commit 1511b22, commit ca41799 (24 Sep 2015), und commit f65f139, ... (23 Sep 2015), die von Karthik Nayak (
KarthikNayak
).(Zusammengefasst von Junio C Hamano --
gitster
-- in commit 7f11b48, 15 Okt 2015)Insbesondere commit aedcb7d:
Machen '
branch.c
' verwenden 'ref-filter
' APIs für das Durchlaufen refs Sortieren. Dies löscht die meisten der code in 'branch.c
' ersetzenmit aufrufen an die '
ref-filter
Bibliothek.Es fügt die option
--sort=<key>
:Hier:
Siehe auch commit 9e46833 (30 Okt 2015), die von Karthik Nayak (
KarthikNayak
).Half-von: Junio C Hamano (
gitster
).(Zusammengefasst von Junio C Hamano --
gitster
-- in commit 415095f, 03 Jan 2015)InformationsquelleAutor der Antwort VonC
War ich in der Lage, verweisen die Beispiele oben etwas zu schaffen, das funktioniert für mich am besten.
InformationsquelleAutor der Antwort Andrew Anthony Gerst
Fügt einige Farbe (da
pretty-format
ist nicht verfügbar)InformationsquelleAutor der Antwort epylinkn
Ich kam mit dem folgenden Befehl (Git 2.13 und höher):
Wenn Sie nicht über
column
Sie können ersetzen Sie die Letzte Zeile mitSieht die Ausgabe wie
Schrieb ich ein blog-post darüber, wie die verschiedenen Teile funktionieren.
InformationsquelleAutor der Antwort bdesham
Ich hatte das gleiche problem, also schrieb ich ein Ruby-gem genannt Zweig. Es listet Zweige in chronologischer Reihenfolge (das neueste zuerst), und kann auch ermöglichen es Ihnen, ein max Alter, so dass Sie don ' T-Liste alle Zweige (wenn Sie haben eine Menge von Ihnen). Zum Beispiel:
Es auch ermöglicht das speichern von benutzerdefinierten Eigenschaften für jeden Zweig, z.B., ticket-id, status, todos und filtern Sie die Liste der Filialen, die nach diesen Eigenschaften. Mehr info: http://rondevera.github.io/twig/
InformationsquelleAutor der Antwort Ron DeVera
FYI, wenn Sie möchten, um eine Liste der kürzlich ausgecheckt äste (im Gegensatz zu kürzlich begangen), können Sie mithilfe von git - reflog:
Siehe auch: Wie kann ich eine Liste von git-branches, ich habe mir vor kurzem ausgecheckt?
InformationsquelleAutor der Antwort Jordan Brough
Hier ist ein script, dass das macht, was alle anderen Skripte tun. In der Tat bietet es eine Funktion für Ihre shell.
Sein Beitrag ist, dass es zieht einige Farben aus deinem git config (oder verwendet die Standardwerte).
InformationsquelleAutor der Antwort joeytwiddle
Basierend auf ilius' version, aber mit den aktuellen Zweig angezeigt, mit einem Stern und in Farbe, und zeigt nur, was ist nicht wie beschrieben "Monate" oder "Jahre" her:
InformationsquelleAutor der Antwort Mark Lodato
Hier ist ein kleines Skript, das ich verwenden zum wechseln zwischen den letzten Fachgebiete:
Mit diesen beiden Aliase
Rufen, dass in einem git-repo und es wird Ihnen zeigen, die letzten N Zweige (10 standardmäßig) und eine Zahl neben jedem. Eingabe der Nummer der Filiale und die Kontrollen.
InformationsquelleAutor der Antwort Agus Arias
Mein bestes Ergebnis als Skript:
InformationsquelleAutor der Antwort saeedgnu
Hier ist die Variante, die ich suchte:
Dass
tail -r
kehrt die Liste, damit die letztencommiterdate
letzten ist.InformationsquelleAutor der Antwort Ben
Spät zur party hier. Die anerkannten CML beantworten Felsen, aber wenn Sie wollen etwas schöner, wie eine GUI, und Ihre Herkunft === "github".
Können Sie auf "Zweige" in die repo. oder schlagen Sie die url direkt: https://github.com/ORGANIZATION_NAME/REPO_NAME/branches
InformationsquelleAutor der Antwort jahrichie
Ich pipe die Ausgabe der akzeptierten Antworten in
dialog
, um mir eine interaktive Liste:Speichern unter (z.B.)
~/bin/git_recent_branches.sh
undchmod +x
. Danngit config --global alias.rb '!git_recent_branches.sh'
um mir eine neuegit rb
Befehl.InformationsquelleAutor der Antwort John Delaney
git for-each-ref --sort=committerdate refs/heads/--format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'
ist, dass Sie brauchen,InformationsquelleAutor der Antwort ChunkCoder