Was bewirkt, dass "diff" "git diff" ausführt?


7

Ich möchte wie hier und in der Dokumentation diffbeschrieben verwenden , die ich beim Tippen sehe man diff. Wenn ich jedoch tippe diff, bekomme ich Folgendes:

~ ❯❯❯ diff
usage: git diff --no-index <path> <path>

Wenn ich versuche zu verwenden diff , erhalte ich ähnliche Git-Fehler, weil dies -rqunterstützt wird, man diffaber nicht von git diff:

~ ❯❯❯ diff -rq ~/ ~/Desktop
fatal: invalid diff option/value: -rq

Ich verwende Prezto und Hub, die beide zur Git-Produktivität beitragen, aber keinen Alias erstellen , der, soweit ich das beurteilen kann, zumindest nicht damit beginnt g.

Ich habe ein paar Skripte wie dieses ausgeführt , um zu versuchen, etwas zu finden, das definiert diff, git diffaber ohne Erfolg.

Wie behebe ich das / finde heraus, was es verursacht / überschreibe es?

Bearbeiten

Ran type diff:

diff is a shell function
diff is /usr/bin/diff

Führen Sie type diffdie Ausgabe aus und veröffentlichen Sie sie.
— Michael Homer


@ MichaelHomer hinzugefügt. Das sieht für mich richtig aus.
— Ben Saufley

Ich weiß nicht, wie Sie prezto sagen, dass er das nicht tun soll, aber im schlimmsten Fall können Sie es einfach heraushacken.
— Michael Homer

1
EIGENTLICH! Ich bin gelaufen brew install colordiffund jetzt diffläuft colordiff, was eine tatsächliche diffSache ist.
— Ben Saufley

Antworten:


9

Dies scheint darauf zurückzuführen zu sein , dass eine Funktion überschrieben wirddiff . Es kann durchaus eine Möglichkeit geben, dies zu deaktivieren, aber ich weiß nicht, was es ist ( aber Ericbn tut es! ). Sie haben einige Möglichkeiten:

  • /usr/bin/diffoder command diffbeide führen den diffBefehl und nicht die Funktion aus.
  • unset -f diffwird die diffFunktion entfernen . Sie können das in Ihre Shell-Konfiguration einfügen.
  • Wie Sie festgestellt haben, colordiffwird es bei Installation git diffvon der Funktion bevorzugt verwendet .
  • Schließlich können Sie die Funktion aus dieser Datei selbst entfernen oder umbenennen.

Dies scheint wirklich eine Fehlfunktion in Prezto zu sein.


1
sicherlich ein gutes Beispiel für die Übel des globalen Geltungsbereichs und der Namenskollisionen
— Michael Durrant

2

Ich würde eine solche Funktion verwenden

$ diffit () {
command diff "$@"
}

Eine Funktion über einen Alias, da es Parameter gibt

Verwendungszweck: diffit file1 file2

Sie könnten es in Ihre .bashrc einfügen.
Persönlich behalte ich meine Funktionssammlung in .bash_functionsund in der .bashrcich habe

test -f ~/.bash_functions.sh && . $_

1
Mach es einfach command diff "$@".
— Arthur2e5

1

Wie @MichaelHomer antwortete, ist dies eine Prezto-Funktion, die Teil des Dienstprogrammmoduls ist, das unter https://github.com/sorin-ionescu/prezto/tree/master/modules/utility dokumentiert ist . Der Weg, dies zu deaktivieren, ist:

Fügen Sie zpreztorc die folgende Zeile hinzu, um die Diff-Hervorhebung zu deaktivieren:

zstyle ':prezto:module:utility:diff' color 'no'

Oder die Installation colordiffwürde auch dazu führen, dass die benutzerdefinierte Funktion sie anstelle von git diffaufruft, da der Zweck des benutzerdefinierten Prezto darin diffbesteht:

  • diffhebt die Diff-Ausgabe hervor (erfordert colordiffoder Git).
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.