442 Stimmen

Datei von "git diff" ausschließen

Ich versuche, eine Datei auszuschließen ( db/irrelevant.php ) aus einer Git-Diff. Ich habe versucht, eine Datei in der db Unterverzeichnis namens .gitattributes mit der Zeile irrelevant.php -diff und ich habe auch versucht, eine Datei namens .git/info/attributes mit db/irrelevant.php .

In allen Fällen ist die db/irrelevant.php Datei ist als Git-Binärpatch in der Diff-Datei enthalten. Ich möchte aber, dass die Änderungen an dieser Datei vom diff-Befehl ignoriert werden. Was mache ich falsch?

583voto

Mr_and_Mrs_D Punkte 29254

Omg, Treiber und awk, um eine lausige Datei auszuschließen? Seit git 1.9 etwas können Sie:

git diff -- . ':(exclude)db/irrelevant.php' ':(exclude)db/irrelevant2.php'

(Unter Windows ersetzen Sie die einfachen Anführungszeichen ' durch doppelte Anführungszeichen " .)

Ah, Eleganz! Siehe die zitierte Antwort und für Details diese Antwort von @torek

158voto

chtenb Punkte 13189

Diese Methode ist kürzer als die akzeptierten Antworten.

git diff 987200fbfb 878cee40ba -- ':!*.cs'

Weitere Informationen über die verschiedenen Einschluss-/Ausschlussmöglichkeiten finden Sie unter dieser andere Beitrag

96voto

dlsso Punkte 6237

Einfachste Antwort

git diff ':!db/irrelevant.php'

Es ist nur ':!<path>' nach Ihrem diff-Befehl. Der diff-Befehl kann so kompliziert sein, wie Sie wollen, und Sie können Platzhalter verwenden wie *.min.js oder fügen Sie mehrere Ausschlüsse hinzu (trennen Sie die zitierten Blöcke durch Leerzeichen), wenn Sie möchten.

82voto

KurzedMetal Punkte 12066

Sie könnten einen benutzerdefinierten Diff-Treiber mit einem no op-Befehl einrichten und ihn den Dateien zuweisen, die ignoriert werden sollen.

Einen repositoryspezifischen Diff-Treiber erstellen mit diesem Befehl

git config diff.nodiff.command /bin/true

oder für alle Ihre Repos mit --global .

(Wenn /bin/true gibt es in MacOS nicht, Alternativen wären die Verwendung von /usr/bin/true ou echo ).

Weisen Sie dann den neuen Diff-Treiber den Dateien zu, die Sie ignorieren möchten in Ihrem .git/info/attributes Datei.

irrelevant.php    diff=nodiff

Wenn dieser Status mit anderen Entwicklern geteilt werden soll, können Sie .gitattributes anstelle von .git/info/attributes und teilen die git config Befehl mit Ihren Kollegen zu teilen (durch eine Dokumentationsdatei oder ähnliches).

40voto

Szilárd Pfeiffer Punkte 1616

Sie können auch Folgendes verwenden filterdiff Programm des patchutils Programmsammlung, um einige Teile eines Diffs auszuschließen. Zum Beispiel:

git diff | filterdiff -p 1 -x db/irrelevant.php

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X