Wie 'git diff' ich in einem bestimmten Verzeichnis?
132
git diffführt tatsächlich einen Unterschied im gesamten Quellcode aus. Wie mache ich das in einem bestimmten Verzeichnis, damit ich Änderungen an Dateien darunter anzeigen kann?
Ich würde gerne verwenden, git diff -- myfolderum die Mehrdeutigkeit von Git zu minimieren. Die allgemeine Notation für git diff (und viele git-Befehle) lautet, git diff [commit-ish] -- [path]dass commit-ish standardmäßig HEAD (wo Sie sich gerade befinden) und [path]standardmäßig das git-Stammverzeichnis verwendet, aber alles relativ zu Ihrem aktuellen Verzeichnis sein kann. Ohne das --wird git raten, was du meinst, [commit-ish]oder [path]. In einigen Fällen führt dies dazu, dass git sagt, die Notation sei "mehrdeutig". Wenn ich mich richtig erinnere.
L0LN1NJ4
2
Dies gibt nichts aus, wenn ich die Methode in der Antwort und die Methode im Kommentar versuche.
Ray
@ray, was bedeutet, dass Sie keine Unterschiede zwischen dem Arbeitsbaum und dem letzten Commit haben
valerij vasilcenko
3
Für @ray und zukünftige Personen, die dies sehen, können Sie die Zweige git diff master..develop myfolder/einschließen, zwischen denen Sie unterscheiden möchten, wie @CrandellWS im Kommentar zur ursprünglichen Frage sagte. Der Git-Status zeigt Ihnen Änderungen an, wenn Sie danach suchen.
BVBAccelerate
2
@ray stellen Sie sicher, dass Sie sich im Stammverzeichnis befinden. Der Pfad ist relativ zu Ihrem aktuellen Verzeichnis.
Nickofthyme
59
Wenn Sie verschiedene Zweige vergleichen, müssen Sie --eine Git-Revision von einem Dateisystempfad trennen. Zum Beispiel mit zwei lokalen Niederlassungen masterund bryan-working:
Nur eine - Klausel ist erforderlich , nachdem die beiden Zweige Auflistung, wie in: git diff branch1 branch2 - path / to / dir
Schmirgel
4
Sie sollten es sich zur Gewohnheit machen, in der Dokumentation nach solchen Dingen zu suchen. Es ist sehr nützlich und wird Ihre Fähigkeiten sehr schnell verbessern. Hier ist das relevante Bit, wenn Sie dies tungit help diff
Das Gleichheitszeichen scheint für Git 2.17.1 falsch zu sein. Verwenden Sie git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"stattdessen
Mark Schäfer
Beachten Sie, dass Sie Beyond Compare für dir diff entweder so konfigurieren müssen, dass es Symlinks folgt (In einer Ordnervergleichsansicht -> Regeln (Schiedsrichtersymbol) -> Behandlung -> Symlinks folgen) ODER die --no-symlinksOption hinzufügen, damit der Befehl lautetgit difftool --dir-diff --no-symlinks
Ashutosh Jindal
1
Sie können nicht nur einen Pfad hinzufügen, sondern auch hinzufügen git diff --relative, um das Ergebnis relativ zu diesem Ordner zu erhalten.
git -C a/folder diff --relative
Und mit Git 2.28 (Q3 2020) haben die Befehle in der diffFamilie " " gelernt, die diff.relativeKonfigurationsvariable " " zu berücksichtigen.
Unterzeichnet von: Laurent Arnoud Bestätigt von: Đoàn Trần Công Danh
Die auf diff.relativeboolesche Option festgelegte Option truezeigt nur Änderungen im aktuellen Verzeichnis / Wert an, die durch das pathArgument der relativeOption angegeben werden, und zeigt Pfadnamen relativ zum oben genannten Verzeichnis an.
Lehren Sie --no-relative, früher zu überschreiben--relative
Fügen Sie für git-format-patch (1) Optionsdokumentation --relativeund--no-relative
Beachten Sie, dass in beiden Fällen alle Änderungen an der Seite (links oder rechts), die sich auf den aktuellen Arbeitsbaum beziehen, beibehalten werden.
git diff master..yourbranch path/to/folder
Antworten:
Geben Sie einen Pfad ein (in diesem Fall mein Ordner) und führen Sie einfach Folgendes aus:
quelle
git diff -- myfolder
um die Mehrdeutigkeit von Git zu minimieren. Die allgemeine Notation für git diff (und viele git-Befehle) lautet,git diff [commit-ish] -- [path]
dass commit-ish standardmäßig HEAD (wo Sie sich gerade befinden) und[path]
standardmäßig das git-Stammverzeichnis verwendet, aber alles relativ zu Ihrem aktuellen Verzeichnis sein kann. Ohne das--
wird git raten, was du meinst,[commit-ish]
oder[path]
. In einigen Fällen führt dies dazu, dass git sagt, die Notation sei "mehrdeutig". Wenn ich mich richtig erinnere.git diff master..develop myfolder/
einschließen, zwischen denen Sie unterscheiden möchten, wie @CrandellWS im Kommentar zur ursprünglichen Frage sagte. Der Git-Status zeigt Ihnen Änderungen an, wenn Sie danach suchen.Wenn Sie verschiedene Zweige vergleichen, müssen Sie
--
eine Git-Revision von einem Dateisystempfad trennen. Zum Beispiel mit zwei lokalen Niederlassungenmaster
undbryan-working
:Oder von einer lokalen Niederlassung zu einer Fernbedienung:
quelle
Sie sollten es sich zur Gewohnheit machen, in der Dokumentation nach solchen Dingen zu suchen. Es ist sehr nützlich und wird Ihre Fähigkeiten sehr schnell verbessern. Hier ist das relevante Bit, wenn Sie dies tun
git help diff
Die beiden
<path>
s müssen Sie in die betreffenden Verzeichnisse ändern.quelle
Fügen Sie Beyond Compare als Ihr Difftool in Git hinzu und fügen Sie einen Alias für diffdir hinzu als:
Holen Sie sich den Gitdiff als:
Referenz: Vergleichen Sie ganze Verzeichnisse mit git difftool + Beyond Compare
quelle
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"
stattdessen--no-symlinks
Option hinzufügen, damit der Befehl lautetgit difftool --dir-diff --no-symlinks
Sie können nicht nur einen Pfad hinzufügen, sondern auch hinzufügen
git diff --relative
, um das Ergebnis relativ zu diesem Ordner zu erhalten.Und mit Git 2.28 (Q3 2020) haben die Befehle in der
diff
Familie " " gelernt, diediff.relative
Konfigurationsvariable " " zu berücksichtigen.Siehe Commit c28ded8 (22. Mai 2020) von Laurent Arnoud (
spk
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit e34df9a , 02. Juni 2020)Die Dokumentation enthält jetzt :
quelle
Wenn Sie die Unterverzeichnisse ausschließen möchten, können Sie verwenden
quelle
Um Beyond Compare als Difftool für Directory Diff zu verwenden, denken Sie daran, aktivieren Sie folgen Sie symbolischen Links wie folgt:
In einer Ordnervergleichsansicht → Regeln (Schiedsrichtersymbol):
Aktivieren Sie anschließend die folgenden symbolischen Links und aktualisieren Sie die Sitzungsstandards:
ODER,
Richten Sie den Alias folgendermaßen ein:
Beachten Sie, dass in beiden Fällen alle Änderungen an der Seite (links oder rechts), die sich auf den aktuellen Arbeitsbaum beziehen, beibehalten werden.
quelle