Lassen Sie uns sagen , dass ich einen neuen Zweig erstellt my_experiment
aus master
und machte mehrere Commits my_experiment
. Wenn ich tun , git log
wenn auf my_experiment
, sehe ich die auf diesen Zweig gemacht Commits, sondern auch die gemacht Commits master
vor der my_experiments
Filiale erstellt wurde.
Ich würde es sehr nützlich finden, die Historie aller Commits für den my_experiments
Zweig zu sehen, bis die Erstellung dieses Zweigs erreicht ist - praktisch eine wahre Geschichte nur dieses Zweigs. Andernfalls ist mir beim Durchsuchen des Protokolls nicht klar, ob sich die Commits in der my_experiments
Zweigstelle befanden oder nicht.
Gibt es eine Möglichkeit, dies mit Git zu tun?
git log master..
Git?master..
) Teil.Mit dem
git merge-base
Befehl können Sie einen gemeinsamen Vorfahren finden. Wenn also my_experiment noch nicht mit master zusammengeführt wurde und my_experiment aus master erstellt wurde, können Sie:quelle
git log --oneline `git merge-base my_experiment master`^..my_experiment --first-parent
Hinweis: Wenn Sie dieses Protokoll auf das letzte n Commit beschränken (die letzten 3 Commits, z. B. Git Log -3), stellen Sie sicher, dass zwischen 'n' und Ihrem Zweig ein Leerzeichen steht:
Vor Git 2.1 (August 2014)
git log -3master..
würde dieser Fehler tatsächlich die letzten 3 Commits des aktuellen Zweigs anzeigen (hiermy_experiment
), wobei dasmaster
Limit ignoriert wird (dh wennmy_experiment
nur ein Commit enthalten ist, werden noch 3 aufgelistet, 2 davon vonmaster
)Siehe Commit e3fa568 von Junio C Hamano (
gitster
) :Revision: "
git log -<count>
" genauer analysierenquelle
Sie können nur verwenden
git log --oneline
quelle
Ich denke, eine Option für Ihre Zwecke ist
git log --online --decorate
. Auf diese Weise erfahren Sie, welches Commit aktiviert ist und welche Top-Commits für jeden Zweig in Ihrer Story vorhanden sind. Auf diese Weise haben Sie einen guten Überblick über die Struktur Ihres Repos und die mit einem bestimmten Zweig verbundenen Commits. Ich denke, das könnte helfen.quelle
Ich weiß, dass es für diesen sehr spät ist ... Aber hier ist ein (nicht so einfacher) Oneliner, um das zu bekommen, wonach Sie gesucht haben:
git show-branch
(Senden der Warnungen an/dev/null
).grep -E "\[$BRANCH_NAME"
.$BRANCH_NAME
mit erhalten wirdgit branch | grep -E '^\*' | awk '{ printf $2 }'
(der Zweig mit einem Stern, der ohne diesen Stern wiedergegeben wird).tail -n+2
.[$BRANCH_NAME]
mitsed -E "s/^[^\[]*?\[/[/"
.quelle