Wie kann ich das diff eine einzige Datei mit magit?
Sagen, ich habe eine Anzahl von nicht verwandten änderungen abgekoppelt Dateien in meinem git-repo. Ich möchte abgeben und sich verpflichten die einzelnen Dateien separat.
Ich laufen magit-status
, und erhalten eine Liste der geänderten Dateien. Aber das einzige, magit diff-Befehle, die ich finden kann (d
und D
) diff gesamten revisons, nicht für einzelne Dateien.
Möchte ich die Leistung von git diff <filename>
, aber in der magit diff Puffer. Wie bekomme ich magit zu diff nur eine Datei?
- Was über die Verwendung von e auf
magit-status
für Ediff dwimming?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Magit können Sie "review und commit für jede der Dateien einzeln" direkt aus der
magit-status
Puffer, ohne die Notwendigkeit für eine separate diff Puffer.Sie nur erweitern Sie die Datei(s) Sie sind interessiert an (mit TAB, die Ihnen zeigt, die diff für die Datei im Punkt); dann kannst du die bits des es, die Sie einspielen möchten (entweder die ganze Datei oder einzelne Gruppen, oder sogar eine markierte region) mit s, um die Bühne (oder u to unstage). Wiederholen Sie dies für alle änderungen in diesem commit und, sobald alles notwendige bereitgestellt wurde, drücken Sie c um zu beginnen, Begehen.
Bevorzugen Sie vielleicht die Sichtbarkeit Radfahren Verhalten erhalten Sie mit C-TAB (mehrfach), statt der einfachen Umschalten, erhalten Sie standardmäßig mit TAB.
Wenn Sie wirklich wollen, um die diff für eine Datei in einen separaten Puffer, die Sie tun können, dass aus der Datei-Puffer durch Aufruf
magit-diff-buffer-file
direkt, oder mit dem "diff" - option (d) inmagit-file-popup
. z.B.:Beachten Sie auch @assem s Kommentar unten:
Einige andere alternativen, die in Emacs standardmäßig (d.h. nicht Magit) sind:
vc-diff
vc-ediff
für die ediff-äquivalentediff-revision
zum erstellen einer ediff-Sitzung mit mehr OptionenIch bind
vc-ediff
auf C-xvC-=, so dass die beiden Varianten haben ähnliche Schlüssel-Bindungen.s
hat nicht funktioniert in meiner version von magit.magit-ediff
die gebunden ist ane
standardmäßig, und öffnet die ediff-Sitzung für die diff - /Datei-an-Punkt.vc-ediff
wie, die hat standardmäßig keine Bindung (ich benutzeC-x v C-=
).magit-ediff
aus der Neuanordnung von meinem windows? Er Schloss alle Fenster und ersetzte Sie mit seinen eigenen in einem anderen layout, statt einfach nur die von windows über.winner-mode
für diese Art der Sache. Eine schnelleC-c <left>
oder zwei immer bringt die Dinge zurück wie Sie waren, und es funktioniert für alles.Ich empfehlen, gerade die video, die der Schöpfer von magit.
Es ist 20 min und es zeigt Ihnen den work-flow, wie es beabsichtigt war.
Auch, einen kleinen Tipp: Sie können mit 1 2 3 ändern
die diff Ausführlichkeit der aktuellen Position.
Noch ein kleiner tip: wenn du nicht zufrieden bist mit der Größe der Gruppen,
kannst du beliebige Bereiche durch - das ist richtig - Kennzeichnung ein
region und drücken die Taste s. It ' s magic.
Ich wusste nicht, über diese option für eine Weile war ich eigentlich
fallen zurück auf die Konsole und mache
git add -p
auf die altmodische Weise.Es gibt definitiv Vorteile, um nicht gegen den Strich, wenn Sie Werkzeuge, wie beispielsweise durch die anderen Antworten.
Auf der anderen Seite, manchmal möchten Sie einfach nur sagen, der editor, was zu tun ist, und haben die Leute über das internet Ihre Fragen beantworten statt zu sagen, Sie wollen etwas anderes tun.
magit bietet ein Menü-Oberfläche für Dinge zu tun, um die aktuelle Datei durch
M-x magit-file-popup
. Die Tasten, die Sie drücken müssen, um von hier ist "du". Das kann gut sein, zu viele Tastendrücke für Sie, wenn dies der Fall ist, können Sie rufen Siemagit-diff
direkt so:(magit-diff "master" nil (list buffer-file-name))
Möchten Sie vielleicht definieren Sie Ihre eigene Funktion und Tastenbelegung für diese.
magit-diff
hat Vorteile gegenübervc-diff
denn wenn können Sie, um zu springen, um die Lage der diff.