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?

2voto

Es ist sehr einfach, Sie können ausschließen, was Sie wollen, indem Sie Standard-Unix-Befehle verwenden, die unter git bash auch unter Windows verfügbar sind. Das folgende Beispiel zeigt, wie man diff für pom.xml-Dateien ausschließt. Zuerst prüft man diff to master nur auf Dateinamen, dann schließt man mit "grep -v" Dateien aus, die man nicht haben will, und führt diff to master erneut mit der vorbereiteten Liste aus:

git diff master `git diff --name-only master | grep -v pom.xml`

1voto

o01 Punkte 4767

Meine Abhilfe

git add .
git reset <list of files to ignore>
git diff --cached

0voto

Chris Montoro Punkte 11

Ähnlich wie Ben Roux's Lösung, aber wir teilen sie trotzdem:

git status --porcelain | grep -v $PATTERN_TO_EXCLUDE | awk '{print $2}' | xargs git diff

oder, wenn die Änderungen bereits lokal übertragen wurden:

git diff --name-only origin/master | grep -v $PATTERN_TO_EXCLUDE | xargs git diff origin/master

Beispiele:

git status --porcelain | grep -v docs | awk '{print $2}' | xargs git diff origin/master

git diff --name-only origin/master | grep -v docs | xargs git diff origin/master

0voto

mkasberg Punkte 13874

Wenn Sie dies nur tun wollen, um den Unterschied visuell zu überprüfen, können Sie ein visuelles Diff-Tool (wie Melden ) können Sie dies mit einem kurzen, leicht zu merkenden Befehl tun.

Richten Sie zunächst ein Diff-Tool ein, falls Sie dies noch nicht getan haben.

$ git config --global diff.tool = meld

Dann können Sie einen Verzeichnisvergleich durchführen.

$ git difftool --dir-diff

Sie können die Diffs (nach Dateien) in Meld (oder dem Tool Ihrer Wahl) durchsuchen. Öffnen Sie einfach nicht die Datei, die Sie ignorieren möchten.

0voto

William Desportes Punkte 1114
git diff remote/master..master --name-only -- ':!README.rst'

Gab mir (Git-Version 2.11.0)

fatal: There is nothing to exclude from by :(exclude) patterns.
Perhaps you forgot to add either ':/' or '.' ?

git diff remote/master..master --name-only -- './*' ':!README.rst'

Hat gut geklappt, Quelle: https://stackoverflow.com/a/30084612/5155484

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