Ich nehme an, dass dies irgendwo ein Konfigurationsfehler ist, aber ich kann nicht herausfinden, wo. Normale Git-Befehle scheinen gut zu funktionieren, aber "Git Diff" macht nichts. Aus Sicherheitsgründen habe ich externe Diff-Tools aus meiner .gitconfig-Datei entfernt. Dies wurde über MacPorts installiert und ist die neueste Version (1.7.2.2).
Was ich sehe ist, dass wenn ich "git diff" von meinem Arbeitsbereich aus starte, es einfach beendet wird und nichts tut.
$ git --version
git version 1.7.2.2
$ git diff
$
Wenn ich ein Verzeichnis außerhalb meines Stammarbeitsbereichs sichere, gibt mir die Eingabe von "git diff" Folgendes:
$ git diff
usage: git diff [--no-index] <path> <path>
Dies kann Verhalten erwartet werden, da ich nicht unter einem Git-Repository bin.
Irgendwelche Ideen, was ich tun kann, um dieses Problem zu beheben?
git diff
außerhalb eines Repos wird bald deutlicher. Siehe meine Antwort untenAntworten:
Die Standardausgabe für
git diff
ist die Liste der Änderungen, die nicht festgeschrieben / zum Index hinzugefügt wurden. Wenn es keine Änderungen gibt, gibt es keine Ausgabe.Weitere Informationen finden Sie in der Dokumentation . Scrollen Sie insbesondere zu den Beispielen und lesen Sie diesen Abschnitt:
Außerhalb Ihres Arbeitsbereichs weiß Git nicht, was zu unterscheiden ist, daher müssen Sie explizit zwei zu vergleichende Pfade angeben, daher die Verwendungsnachricht.
quelle
Hinweis: Start von Git 1.8.5 oder 1.9, 4. Quartal 2013 :
Sehen:
git diff --no-index
dies wie ein regulärer (Nicht-Git) handeln kanndiff
.quelle
Es tut nichts, wenn Ihr Arbeitsverzeichnis sauber ist und es keine Unterschiede zum letzten Update gibt. Versuchen Sie, eine Datei zu bearbeiten, und führen Sie dann git diff erneut aus. Anschließend sollte das Diff angezeigt werden.
quelle
Wenn Sie es außerhalb eines realen Repositorys oder einer Arbeitskopie verwenden, ist sein Verhalten mit dem GNU-Diff identisch. Sie müssen also die 2 zu vergleichenden Verzeichnisse oder Dateien informieren. Beispiel:
git diff old_dir new_dir
.Wenn es einen Unterschied zwischen ihnen gibt, zeigt Ihnen die Ausgabe wie erwartet.
quelle
Nicht in Ihrem Fall, aber möglicherweise, weil die Datei, die Sie übergeben, nicht vorhanden ist
nichts passiert
quelle