wake-up-neo.com

Wie kann ich feststellen, auf welchem ​​entfernten "übergeordneten" Zweig mein Zweig basiert?

Ich habe ein Szenario, in dem es mehrere Remote-Tracking-Zweige in meinem lokalen Repository gibt, mit denen ich synchronisieren muss. Unser Workflow-Modell lautet:

  • erstellen Sie lokal eine Verzweigung, die auf der gewünschten Remote-Verfolgungsverzweigung basiert
  • nehmen Sie unsere Änderungen vor
  • bauen/testen/beheben
  • verpflichten
  • Zum Remote-Server zurückschieben

Ich habe festgestellt, dass "Git-Status" mir nicht anzeigt, auf welchem ​​Zweig mein lokaler Zweig basiert, es sei denn, etwas hat sich geändert. d.h. nicht festgeschriebene lokale Änderungen oder ein kürzlich erfolgter Abruf stellen meine lokale Niederlassung in Verzug. Gibt es eine Möglichkeit zu wissen, auf welchem ​​Zweig mein lokaler Zweig basiert, ohne dass Änderungen vorgenommen werden müssen? So etwas wie "git status -showparentbranch" oder ein anderer Befehl, der dies anzeigen würde. Gelegentlich stoße ich auf dieses Bedürfnis, weiß aber noch nicht, wie ich es befriedigen soll.

33
Andrew Falanga

versuche dies:

git log --graph --decorate
41
elrrrrrrr

Git verfolgt nicht, welche Zweige ein Commit durchlaufen hat. Es gibt keine Möglichkeit zu sagen. Wenn die Commits auf Ihrem Repo stattgefunden haben, können Sie das Reflog überprüfen, aber das war es auch schon. Werfen Sie einen Blick auf die Erklärung der DAG in das Pro-Git-Buch - und lesen Sie dort auch auf reflog nach.

Sie können den Verlauf auch besser visualisieren mit gitk --all oder git log --graph --decorate

Hoffe das hilft.

17
Adam Dymitruk

git branch -vv werden:

  • liste alle deine lokalen Filialen auf
  • zeigen Sie den Namen des Remote-Zweigs neben jedem lokalen Zweig an
  • markieren Sie den aktiven lokalen Zweig

... hieraus können Sie den entfernten Zweig des aktuell aktiven Zweigs und mehr bestimmen.

Wenn Sie viele lokale Niederlassungen haben, ist die Liste möglicherweise sehr lang. Verwenden git branch -vv | grep SOMEWORD, um die Ausgabe auf Zweige zu beschränken, die SOMEWORD enthalten. Wenn Sie sich ein für Ihre Branche einzigartiges Wort vorstellen können, erhalten Sie den besten Filter (nur ein Ergebnis).

Außerdem erhalten Sie in der Ausgabe einige zusätzliche Daten, nämlich die Nummer (SHA1) und die Meldung des letzten Commits. Der grep-Filter wird auf diese angewendet. Ich konnte keinen Weg finden, dies auszuschließen.

Aus der Git Branchendokumentation :

-v

-vv

--verbose

Zeigen Sie im Listenmodus sha1 und die Betreffzeile für jeden Kopf zusammen mit der Beziehung zum vorgelagerten Zweig (falls vorhanden) an. Bei zweimaliger Angabe wird auch der Name der vorgelagerten Filiale ausgegeben (siehe auch git remote show).

(Basierend auf Ihrem Kommentar, ja, es scheint, dass die "richtige" Frage eher nach dem "entfernten" Zweig als nach dem "übergeordneten" Zweig fragen würde. Aber das habe ich auch gesucht! :))

11
david.libremone

Sie könnten dies auch versuchen:

git rev-parse --abbrev-ref --symbolic-full-name @{u}

Verwenden Sie diesen Alias ​​in Ihrer .gitconfig-Datei:

[alias]
    showparentbranch = rev-parse --abbrev-ref --symbolic-full-name @{u}

Sie können dann einfach anrufen:

git showparentbranch

Getestet auf Git Version 2.10.2.windows.1

1