509 Stimmen

Wie kann ich eine Vorschau einer Zusammenführung in Git anzeigen?

Ich habe einen Git-Zweig (z. B. den Hauptzweig) und möchte einen anderen Entwicklungszweig einbinden. Oder muss ich das?

Um zu entscheiden, ob ich diesen Zweig wirklich zusammenführen möchte, würde ich gerne eine Art Vorschau sehen, was die Zusammenführung bewirken wird. Vorzugsweise mit der Möglichkeit, die Liste der Commits zu sehen, die angewendet werden.

Bislang ist das Beste, was mir einfällt merge --no-ff --no-commit und dann diff HEAD .

22 Stimmen

Ich würde nur git merge y git reset --keep HEAD@{1} wenn mir das Ergebnis nicht gefällt.

4 Stimmen

Beachten Sie, dass die Liste der Commits mit ihrem Diff nicht notwendigerweise die ganze Geschichte erzählt - wenn die Zusammenführung nicht trivial ist, und besonders wenn es Konflikte gibt, könnte das tatsächliche Ergebnis der Zusammenführung ein wenig interessant sein.

0 Stimmen

Das Problem dabei ist, dass man nur schwer erkennen kann, welche Änderungen tatsächlich vorgenommen wurden.

6voto

Wenn Sie die Änderungen bereits abgeholt haben, ist mein Favorit:

git log ...@{u}

Ich glaube aber, dass dafür Git 1.7.x erforderlich ist. Die @{u} Notation ist eine "Kurzschrift" für den vorgelagerten Zweig und damit ein wenig vielseitiger als git log ...origin/master .

Hinweis: Wenn Sie zsh und die erweiterte Glog-Funktion verwenden, müssen Sie wahrscheinlich etwas wie folgt tun:

git log ...@\{u\}

4voto

antak Punkte 17136

Wenn man nicht gerade die Zusammenführung zum Wegwerfen durchführt (siehe Kasapos Antwort), scheint es keine zuverlässige Möglichkeit zu geben, dies zu erkennen.

Aber hier ist eine Methode, die dem schon recht nahe kommt:

git log TARGET_BRANCH...SOURCE_BRANCH --cherry

Dies gibt einen guten Hinweis darauf, welche Commits es in die Zusammenführung schaffen werden. Um Diffs zu sehen, fügen Sie -p . Um Dateinamen zu sehen, fügen Sie eine der folgenden Optionen hinzu --raw , --stat , --name-only , --name-status .

Das Problem mit dem git diff TARGET_BRANCH...SOURCE_BRANCH Ansatz (siehe Jan Hudecs Antwort) ist, dass Sie Diffs für Änderungen sehen, die sich bereits in Ihrem Zielzweig befinden, wenn Ihr Quellzweig Cross Merges enthält.

4voto

Piyush Sarin Punkte 61

Ich habe versucht, diese Sache, um die Änderungen in Visual Studio Code zu überprüfen.

Erstellen Sie einen temporären Zweig von dev. Führen Sie dann den Zweig, in dem Sie die Datei geändert haben, mit der Option --no-ff --no-commit zusammen.

git checkout dev 
git checkout -b feature_temp 
git merge feature --no-ff --no-commit

Die geänderte Datei Ihres Feature-Zweiges wird im feature_temp-Zweig reflektiert.

3voto

Noufal Ibrahim Punkte 68934

git log currentbranch..otherbranch gibt Ihnen die Liste der Commits, die in den aktuellen Zweig übergehen, wenn Sie einen Merge durchführen. Die üblichen Argumente für log, die Details zu den Commits liefern, geben Ihnen weitere Informationen.

git diff currentbranch otherbranch gibt Ihnen den Unterschied zwischen den beiden Commits, die zu einem Commit werden. Dies ist ein Diff, das Ihnen alles zeigt, was zusammengeführt wird.

Würden diese helfen?

2 Stimmen

Das ist falsch. git log otherbranch..currentbranch gibt die Liste der Übertragungen auf stromabzweig . Die git diff otherbranch currentbranch gibt Ihnen diff von der zu verschmelzenden Version zum aktuellen tip, was so nutzlos ist, wie es nur sein kann, denn was Sie wollen, ist diff von der Verschmelzungsbasis zum Verschmelzungskopf.

0 Stimmen

Danke. Ich habe die Namen der Bäumchen ausgetauscht.

3voto

G-Man Punkte 941

Pull Request - Ich habe die meisten der bereits eingereichten Ideen verwendet, aber eine, die ich auch oft verwende, ist (vor allem, wenn sie von einem anderen Entwickler kommt) ein Pull Request, der eine praktische Möglichkeit bietet, alle Änderungen in einem Merge zu überprüfen, bevor er stattfindet. Ich weiß, das ist GitHub nicht Git, aber es ist sicher praktisch.

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