2 Stimmen

git diff master..foo gibt keine Ausgabe, aber foo wird nicht zusammengeführt

Wenn ein Zweig nicht vollständig zusammengeführt ist, sollte git diff dann nicht eine Ausgabe liefern? Wie lässt sich das folgende Verhalten erklären?

$ git branch
foo
* master

$ git diff master..foo

$ git br -d foo
error: The branch 'foo' is not fully merged.
If you are sure you want to delete it, run 'git branch -D foo'.

Wie kann ich also herausfinden, welche Arbeit in foo geleistet wurde, die ich noch nicht in master eingebunden habe?

2voto

che Punkte 11861
git log master..foo

zeigt Ihnen alle Commits, die in foo, aber nicht in master sind.

Git diff selbst zeigt Ihnen nur Unterschiede in den tatsächlich getrackten Dateien an, was nicht dasselbe ist wie der Verlauf. Zum Beispiel kann foo einige Änderungen enthalten, die später rückgängig gemacht wurden.

1voto

asmeurer Punkte 79555

Es ist möglich, dass zwei Zweige unterschiedlich sind, aber genau denselben Inhalt haben. Das liegt daran, dass es andere Unterschiede geben kann, wie unterschiedliche Commit-Nachrichten, Zeitstempel, Autoren usw., die alle zum SHA1-Hash beitragen, den Git verwendet, um zu bestimmen, ob die Commits gleichwertig sind.

0voto

Adam Dymitruk Punkte 116211

Sie möchten Folgendes verwenden git log oder ( git rev-list wenn Skripting) anstelle von diff, um die tatsächlichen Übertragungen zu sehen.

Wie dem auch sei, Ihr diff-Befehl sollte Ihnen Unterschiede gezeigt haben, es sei denn, Sie haben genau die gleiche Arbeit im Master wie in foo getan, da der gemeinsame Commit zwischen den 2.

Sie können schnell sehen, wie alle Ihre Zweigstellen miteinander verbunden sind über

git --log --one-line --decorate --all

o

gitk --all

Andernfalls geben Sie einfach an, wessen Verlauf Sie sehen möchten, indem Sie die Option --all con foo master in den obigen Beispielen.

sobald Sie

git merge foo

werden Sie in der Lage sein

git branch -d foo

0voto

georgebrock Punkte 25779

Sie suchen wahrscheinlich nach dem git show-branch Befehl .

git show-branch master foo listet alle Übertragungen auf foo die nicht auf Meister und alle Übertragungen auf Meister die nicht auf foo .

Das Ausgabeformat kann anfangs etwas verwirrend sein, daher lohnt es sich, die Ausgabeabschnitt der Manpage .

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