605 Stimmen

Mit Git alle Übertragungen anzeigen, die in einem Zweig, aber nicht in den anderen Zweigen sind

Ich habe einen alten Zweig, den ich gerne löschen möchte. Bevor ich dies tue, möchte ich jedoch überprüfen, ob alle an diesem Zweig vorgenommenen Übertragungen irgendwann in einen anderen Zweig zusammengeführt wurden. Ich möchte also alle Commits sehen, die in meinem aktuellen Zweig gemacht wurden und die nicht auf einen anderen Zweig angewendet wurden [oder, falls dies ohne Skripting nicht möglich ist, wie kann man alle Commits in einem Zweig sehen, die nicht auf einen anderen Zweig angewendet wurden].

0 Stimmen

Um fehlende Übertragungen zwischen zwei Zweigen aufzulisten, können Sie compare-branches.py verwenden bitbucket.org/aakef/compare-git-branches

0 Stimmen

21voto

sebeck Punkte 230

jimmyorr's Antwort funktioniert nicht unter Windows. Es hilft, wenn man --not anstelle von ^ etwa so:

git log oldbranch --not newbranch --no-merges

7 Stimmen

Das ist richtig, +1. Beachten Sie jedoch, dass ^ wird unter Windows unterstützt, muss aber mit Escapen versehen werden, was unter Windows eine (weitere) ^ : git log oldbranch ^^newbranch --no-merges .

5 Stimmen

Um genau zu sein, funktioniert es unter Windows in der Powershell-Konsole, erfordert aber ein zusätzliches "^" in CMD.

8voto

Jakub Narębski Punkte 286531

Wenn es sich eins (einzeln) Zweig, den Sie überprüfen müssen, z.B. wenn Sie wollen, dass der Zweig "B" vollständig in den Zweig "A" zusammengeführt wird, können Sie einfach folgendes tun:

$ git checkout A
$ git branch -d B

git branch -d <branchname> hat die Sicherheit, dass "der Zweig vollständig in HEAD zusammengeführt werden muss".

Vorsicht : Dadurch wird der Zweig B tatsächlich gelöscht, wenn er mit A zusammengeführt wird.

4voto

Gabriel Staples Punkte 20228

Ich würde gerne zählen auch die Übertragungen, also wie das geht:

Zählt, wie viele Übertragungen auf dem aktuellen Zweig sind ( HEAD ), aber NICHT auf master :

git log --oneline ^master HEAD | wc -l

wc -l bedeutet "Wortanzahl" - zählen Sie die Anzahl der "L "ines.

Und natürlich, um die gesamten Log-Meldungen zu sehen, wie andere Antworten gegeben haben:

git log ^master HEAD

...oder in einer komprimierten --oneline Form:

git log --oneline ^master HEAD

Wenn Sie auch Merge Commits nicht zählen wollen, können Sie diese mit --no-merges :

git log --oneline --no-merges ^master HEAD | wc -l

etc.

3voto

manRo Punkte 1415

Sie können dieses einfache Skript verwenden, um nicht zusammengeführte Commits zu sehen

#!/bin/bash
# Show commits that exists only on branch and not in current
# Usage:
#   git branch-notmerge <branchname>
#
# Setup git alias
#   git config alias.branch-notmerge [path/to/this/script]
grep -Fvf <(git log --pretty=format:'%H - %s') <(git log $1 --pretty=format:'%H - %s')

Sie können auch folgendes Werkzeug verwenden git-wtf die den Zustand der Zweigstellen anzeigen wird

3voto

Pete B Punkte 1639

Commits und Commit-Inhalte anzeigen von other-branch die sich nicht in Ihrem aktuellen Zweig befinden:

git show @..other-branch

Zusätzlich können Sie die Commits aus other-branch direkt zu Ihrer derzeitigen Niederlassung:

git cherry-pick @..other-branch

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X