Wie kann ich das Protokoll für einen anderen Zweig als den aktuellen drucken?

82

Ich bin in einem Zweig mit einigen Änderungen. Das Ändern des Zweigs ist schmerzhaft, da einige Dateien von Prozessen gesperrt werden. Um den Zweig zu ändern, müsste ich alle Prozesse stoppen, die Sperren haben, und dann stashdie Änderungen, bevor ich den anderen Zweig auschecke, um dessen Protokoll anzuzeigen.

Ist es möglich, das Protokoll für einen anderen Zweig anzuzeigen, ohne es auschecken zu müssen?

BanksySan
quelle
1
Haben Sie versucht git log <branch>, wo <branch>steht für den Namen der Branche von Interesse?
Jub0bs
2
@Jubobs, nein, habe ich nicht. Ich sollte versuchen , nur das Offensichtliche , bevor die Suche im Internet zurückgreifen und exotische Vorschläge zu finden , um cherryund rev-list.
BanksySan

Antworten:

123

TL; DR

Verwenden

git log <branch>

Wo <branch>ist der Name des interessierenden Zweigs?

Von der git-logManpage ...

Eine vereinfachte Version der git-login der gegebenen Übersicht dieser Befehl des Mannes Seite ist

git log [<revision range>]

Weiter unten finden Sie folgende Passage:

Wenn no <revision range>angegeben wird, wird standardmäßig HEAD(dh der gesamte Verlauf, der zum aktuellen Commit führt) angegeben.

Mit anderen Worten, git logist äquivalent zu git log HEAD. Wenn Sie sich in einem Zweig befinden, der beispielsweise aufgerufen mybranchwird, entspricht dieser Befehl auch git log mybranch.

Sie möchten das Protokoll auf Commits beschränken, die von einem anderen Zweig aus erreichbar sind, dh von einem Zweig, in dem Sie sich derzeit nicht befinden. Der einfachste Weg, dies zu tun, besteht darin, den Namen des interessierenden Zweigs explizit an Folgendes zu übergeben git log:

git log <branchname>

Weitere Informationen zu den vielen Formen, die das Argument annehmen kann, finden Sie auf der gitrevisions-Manpage<revision-range> .

jub0bs
quelle
Es scheint, als müsste der Zweig zuerst lokal ausgecheckt werden, um "git log" wie folgt auszuführen. Zumindest Git 2.27.0 verhält sich so.
a_girl
@a_girl Ich bin mir nicht sicher, was du hier mit "lokal ausgecheckt" meinst. Sie können dies auf einem lokalen Zweig (z. B. master) ausführen, unabhängig davon, ob er ausgecheckt ist oder nicht, und auf einem Remote-Zweig (z origin/master. B. ).
5.
1
ooooohhh, jetzt habe ich es verstanden. Ich habe es versucht git log mybranchund es hat einen Fehler ausgelöst, aber dann, wenn ich es ausführe, hat git checkout mybranch; git checkout master; git log mybranches auch ohne "origin /" funktioniert. Deshalb dachte ich, dass ich zuerst meine Filiale auschecken muss. Aber ich musste einfach "git log origin / mybranch" verwenden, um nach einem Verlauf des Remote-Zweigs zu suchen. Vielen Dank.
a_girl