Gibt es eine Möglichkeit festzustellen, wann ein Git-Zweig erstellt wurde? Ich habe einen Zweig in meinem Repo und ich erinnere mich nicht daran, ihn erstellt zu haben und dachte, dass der Zeitstempel der Erstellung mein Gedächtnis aufrütteln würde.
git
branch
git-branch
paxos1977
quelle
quelle
Antworten:
Verwenden
Wenn Sie es lieber mit gitk im Kontext sehen möchten, verwenden Sie
(wobei foo der Name des gesuchten Zweigs ist.)
quelle
Wie in den Kommentaren und in Jackubs Antwort erwähnt ,
gc.reflogexpire
können Sie mithilfe Ihres Reflogs herausfinden, wann eine Zweigreferenz war , solange Ihr Zweig jünger ist als die in der Konfigurationseinstellung festgelegte Anzahl von Tagen (der Standardwert ist 90 Tage) zuerst erstellt.Beachten Sie, dass
git reflog
die meistengit log
Flags verwendet werden können. Beachten Sie außerdem, dass dieHEAD@{0}
Stilselektoren effektiv Zeitvorstellungen sind und tatsächlich (auf gehackte Weise) als Datumszeichenfolgen behandelt werden. Dies bedeutet, dass Sie das Flag verwenden--date=local
und die folgende Ausgabe erhalten können:Manchmal kann es auch nützlich sein, Folgendes zu verwenden
--date=relative
:Ein letzter Hinweis: Das
--all
Flag (das eigentlich ein Git-Log-Flag ist, das von Git-Reflog verstanden wird) zeigt die Reflogs für alle bekannten Refs inrefs/
(anstatt einfachHEAD
) an, wodurch Sie Verzweigungsereignisse klar anzeigen können :quelle
gc.reflogexpire
weniger Tage.Pro Git § 3.1 Git-Verzweigung - Was eine Verzweigung ist, enthält eine gute Erklärung dafür, was eine Git-Verzweigung wirklich ist
Da ein Zweig nur ein leichter Zeiger ist, hat git keine explizite Vorstellung von seinem Verlauf oder Erstellungsdatum. "Aber Moment mal", höre ich Sie sagen, "natürlich kennt git meine Branchengeschichte!" Naja, so ungefähr.
Wenn Sie eine der folgenden Aktionen ausführen:
Sie werden sehen, wie die "Geschichte Ihres Zweigs" aussieht, aber es handelt sich tatsächlich um eine Liste von Commits, die über "Zweig" erreichbar sind und vom Master nicht erreichbar sind. Dies gibt Ihnen die gewünschten Informationen, aber genau dann, wenn Sie "Zweig" nie wieder mit dem Master zusammengeführt haben und den Master seit dem Erstellen noch nie mit "Zweig" zusammengeführt haben. Wenn Sie zusammengeführt haben , wird diese Geschichte der Unterschiede zusammenbrechen.
Glücklicherweise enthält das Reflog häufig die gewünschten Informationen, wie in verschiedenen anderen Antworten hier erläutert. Benutze das:
um die Geschichte der Branche zu zeigen. Der letzte Eintrag in dieser Liste ist (wahrscheinlich) der Punkt, an dem Sie den Zweig erstellt haben.
Wenn der Zweig gelöscht wurde, ist 'Zweig' kein gültiger Git-Bezeichner mehr, aber Sie können diesen stattdessen verwenden, um zu finden, was Sie wollen:
Oder in einer Windows-Cmd-Shell:
Beachten Sie, dass Reflog in Remote-Zweigen nicht effektiv funktioniert, sondern nur in solchen, an denen Sie lokal gearbeitet haben.
quelle
gc.reflogexpire
Tage ist, wie in dieser Antwort und dieser Antwort ausgeführt .git reflog --date=local <branch>
Erstens, wenn Ihre Verzweigung innerhalb von
gc.reflogexpire
Tagen erstellt wurde (Standard 90 Tage, dh ungefähr 3 Monate), können Sie den ersten Eintrag im Reflog verwendengit log -g <branch>
odergit reflog show <branch>
suchen, der ein Erstellungsereignis wäre und ungefähr wie folgt aussieht (fürgit log -g
):Sie würden erfahren, wer vor wie vielen Vorgängen einen Zweig erstellt hat und von welchem Zweig (nun, es könnte nur "Aus HEAD erstellt" sein, was nicht viel hilft).
Das hat MikeSep in seiner Antwort gesagt .
Zweitens müssten Sie , wenn Sie einen Zweig haben, der länger als
gc.reflogexpire
läuft und ausgeführt wurdegit gc
(oder der automatisch ausgeführt wurde), einen gemeinsamen Vorfahren mit dem Zweig finden, aus dem er erstellt wurde. Schauen Sie sich die Konfigurationsdatei an, vielleicht gibt es einenbranch.<branchname>.merge
Eintrag, der Ihnen sagt, auf welchem Zweig dieser basiert.Wenn Sie beispielsweise wissen, dass der betreffende Zweig außerhalb des Hauptzweigs erstellt wurde (Verzweigung vom Hauptzweig), können Sie den folgenden Befehl verwenden, um den gemeinsamen Vorfahren anzuzeigen:
git show-branch <branch> master
Alternativ können Sie es auch versuchen .Dies sagte Gbacon in seiner Antwort .
quelle
Ich bin mir des git-Befehls noch nicht sicher, aber ich denke, Sie können sie in den Reflogs finden.
Meine Dateien scheinen einen Unix-Zeitstempel zu haben.
Update: Es scheint eine Option zu geben, beim Drucken der Protokolle den Reflog-Verlauf anstelle des Commit-Verlaufs zu verwenden:
Sie können diesem Protokoll auch bis zu dem Zeitpunkt folgen, an dem Sie den Zweig erstellt haben.
git log
zeigt jedoch das Datum des Commits an, nicht das Datum, an dem Sie die Aktion ausgeführt haben, die einen Eintrag im Reflog vorgenommen hat. Ich habe das noch nicht gefunden, außer indem ich mir das aktuelle Reflog im obigen Pfad angesehen habe.quelle
Versuche dies
quelle
%
vor(refname)
| cut -c 5- | sort -r |
und dann für den Monat durch grep und gab mir mehr oder weniger eine Liste in umgekehrter chronologischer Reihenfolge.--sort='-committerdate'
(beachten Sie das '-' vor dem Committerdate für die umgekehrte chronologische Reihenfolge).Verwenden:
um den gesamten Lebenszyklus Ihres Repositorys im aktuellen Ordner anzuzeigen. Der zuerst angezeigte Filialname (von unten nach oben) ist die Quelle, die erstellt wurde.
Das heißt:
Die Filialentwicklung wird vom Master aus erstellt (Kasse -b)
Die Zweigstelle feature-jira35 wird aus der Entwicklung erstellt (Kasse -b)
Das Zweig-Feature-jira-sut-46 wird aus der Entwicklung erstellt (Kasse -b)
quelle
Dies ist etwas, das ich mir ausgedacht habe, bevor ich diesen Thread gefunden habe.
quelle
Dieser Befehl zeigt das Erstellungsdatum der Verzweigung
dev
vonmain
quelle
Wenn Sie die Details für alle Filialen erhalten möchten
quelle
Ich habe den besten Weg gefunden: Ich überprüfe immer den neuesten Zweig, der auf diese Weise erstellt wurde
quelle
Kombiniert mit der Antwort von Andrew Sohn ( https://stackoverflow.com/a/14265207/1929406 )
quelle
Das hat es für mich getan: (10 Jahre später)
Da zu den Erstellungszeiten der Zweige keine gespeicherten Informationen vorhanden sind, wird das erste Festschreiben jedes Zweigs (
--no-walk
) angezeigt , einschließlich des Datums des Festschreibens. Verwenden Sie diese Option--remotes
für die Remote-Zweige oder lassen Sie sie für lokale Zweige weg.Da ich mindestens ein Commit in einem Zweig durchführe, bevor ich einen anderen erstelle, konnte ich einige Monate der Zweigerstellung (und des Feature-Dev-Starts) zu Dokumentationszwecken zurückverfolgen.
Quelle: AnoE beim Stapelaustausch
quelle
Syntax:
git reflog --date=local | grep checkout: | grep ${current_branch} | tail -1
Beispiel:
git reflog --date=local | grep checkout: | grep dev-2.19.0 | tail -1
Ergebnis:
cc7a3a8ec HEAD@{Wed Apr 29 14:58:50 2020}: checkout: moving from dev-2.18.0 to dev-2.19.0
quelle