Ich weiß, dass ich den Unterschied zwischen HEAD und aktuellem Zustand mit sehen kann meld .
. Aber wie kann ich zum Beispiel die Unterschiede zwischen Zweigen master
und devel
mit Meld sehen?
Im Moment mache ich folgende Schritte:
- Ordner der Arbeitskopie umbenennen
Zum Beispielmv /projectA /projectA_master
) - Klonen Sie das Projekt erneut
git clone url
- Zum
devel
Zweig wechseln
cd projectA && git -b devel origin/devel
- Unterschiede mit meld anzeigen
meld /projectA_Master projectA
Gibt es nicht einen einfacheren Weg, um das gleiche Ergebnis bei der Verschmelzung zu erzielen? Ich brauche es nur, um die Änderungen zu überprüfen und nicht primär zum Zusammenführen.
Antworten:
Ich fand dieses Problem auch ärgerlich, deshalb habe ich eine Git-Meldung erstellt, die eine bequemere Möglichkeit bietet, willkürliche Commits gegen den Arbeitsbaum oder den Staging-Bereich zu unterscheiden. Sie finden es unter https://github.com/wmanley/git-meld . Es ist ein bisschen wie Marks Skript, funktioniert aber zum Vergleichen eines beliebigen Commits oder des Staging-Bereichs oder des Arbeitsverzeichnisses mit einem der anderen. Wenn eines der Dinge, mit denen Sie vergleichen, der Arbeitsbaum ist, dann ist das auch Lesen / Schreiben, damit Sie Ihre Änderungen nicht verlieren.
quelle
Kurz & süß:
Dadurch wird Git für die Verwendung
meld
als Diff-Tool konfiguriert . (Sie müssen die Befehlszeilenargumente nicht angeben, die Unterstützung fürmeld
ist in Git integriert.)Wenn Sie dann einen grafischen Unterschied anstelle eines textuellen Unterschieds wünschen, rufen Sie einfach
git difftool
statt aufgit diff
(beide verwenden dieselben Argumente). In deinem Fall:Update: Wenn Sie nicht den Unterschied von jeweils einer Datei möchten, sondern stattdessen die Ansicht "Unterverzeichnis" von meld mit allen Änderungen zwischen den beiden Zweigen verwenden möchten, beachten Sie die Option
-d
oder--dir-diff
fürgit difftool
. Wenn ich zum Beispiel in Zweig XYZ bin und sehen möchte, was sich zwischen diesem und Zweig ABC unterscheidet, führe ich Folgendes aus:quelle
Ab git v1.7.11 können Sie
git difftool --dir-diff
einen Verzeichnisdifferenz ausführen. Das funktioniert ganz gut mit meld ohne https://github.com/wmanley/git-meld Skripte.Git konfigurieren
Benutze es
Für macOS
quelle
Ctrl+s
wird Ihre Datei geändert , wenn Sie - - den richtigen Teil speichern.Es ist wichtig zu sagen, dass
git difftool -d
Sie Ihre Arbeitsdateien weiterhin in Meld bearbeiten und speichern können . Um dies zu erreichen, müssen Sie einen Zweig mit Ihrem aktuellen Arbeitsbaum vergleichen, zum Beispiel:Meld zeigt an, dass sich sowohl das linke als auch das rechte Verzeichnis in / tmp befinden. Dateien im richtigen Verzeichnis sind jedoch symbolische Links zu Ihren Dateien im aktuellen Arbeitsverzeichnis (gilt nicht für Windows). Sie können sie also direkt in Meld bearbeiten. Wenn Sie sie speichern, werden Ihre Änderungen in Ihrem Arbeitsverzeichnis gespeichert.
Noch interessanter ist der Vergleich des aktuellen Arbeitsverzeichnisses mit dem Versteck. Sie können dies tun, indem Sie einfach Folgendes eingeben:
Anschließend können Sie einige Änderungen aus dem Stash (linkes Fenster) in Ihre aktuelle Arbeitskopie (rechtes Fenster) übertragen, ohne die
git stash pop/apply
störende Konfliktlösung zu verwenden und zu vermeiden, die durch diese Befehle verursacht werden kann.Ich denke, dass es den Workflow mit Stashes erheblich verbessern kann. Sie können Änderungen schrittweise vom Stash in die Arbeitskopie übertragen und nacheinander festschreiben. Wenn Sie möchten, können Sie weitere Änderungen vornehmen.
quelle
Obwohl aus den anderen Antworten hervorgeht, dass es derzeit keine Möglichkeit gibt, dies direkt im Git-Repository zu tun, ist es (dank der Antwort auf eine andere Frage :)) einfach , ein Skript zu schreiben, das die Bäume zweier Commits extrahiert in temporäre Verzeichnisse und führen Sie meld auf diesen aus, wobei beide Verzeichnisse entfernt werden, wenn meld beendet wird:
http://gist.github.com/498628
Natürlich verlieren Sie alle Änderungen, die per Meld vorgenommen wurden, aber ich denke, es ist sehr schön, einen schnellen Überblick über die Unterschiede zu erhalten.
quelle
Ich denke, ein einfacher Weg, dies zu tun, ist
git reset --soft
:Ziel: Vergleiche die Unterschiede zwischen branch_a und branch_b mit meld
quelle
In Git V1.7.9 können Sie zwei Commits ohne die Befehlszeile vergleichen:
Sie müssen in 'git gui' Bearbeitungsoptionen global konfigurieren: "Merge-Tool verwenden: meld".
Starten Sie gitk , wählen Sie ein Commit aus, klicken Sie mit der rechten Maustaste auf ein anderes Commit> " diff this -> selected ". Klicken Sie unter "Patch" mit der rechten Maustaste auf eine Datei> " external diff ".
meld startet und zeigt das noch ausgewählte erste Commit auf der rechten Seite an.
quelle
Fügen Sie für Meld unter macOS Folgendes zu Ihrem hinzu,
~/.gitconfig
wie vom Betreuer der macOS-Anwendung empfohlen, yousseb :Sie können die
merge
Konfigurationen weglassen, wenn Sie möchten.@ GutenYes Antwort hat für mich aufgrund der automatischen Flucht und / oder etwas mit nicht geklappt
zsh
.quelle