git ready

Lerne Git Commit für Commit
von Nick Quaranto, Übersetzung von Nico Gulden

Dateien temporär ignorieren

eingetragen am 18 Feb 2009

Normalerweise ist das Ignorieren von Dateien mit Git ziemlich einfach. Manchmal möchte man jedoch schnell eine Datei für die gesamte Entwicklungsphase oder aus anderen Gründen verstecken. Glücklicherweise gibt es hierfür einen einfachen Weg, dank einer cleveren Anleitung von Eelco Wiersma.

Sein Hauptproblem war git commit -a, das automatisch veränderte Dateien zum Übergabe-Objekt (Commit) hinzufügt. Das ist eine nützliche Abkürzung, vergewissere dich aber, dass du die Staging area verstehst, vor allem falls du feststellst, dass du dieses Kommando die ganze Zeit benutzt.

Um temporär Änderungen in einer Datei zu ignorieren, ist folgender Befehl auszuführen:

git update-index --assume-unchanged <file>

Sollen die Änderungen wieder verfolgt werden:

git update-index --no-assume-unchanged <file>

Es kommen offensichtlich ein paar Einsprüche ins Spiel. Mit git add wird die Datei direkt zum Index hinzugefügt. Das Zusammenführen (Merge) einer Übergabe (Commit) mit diesem aktivierten Schalter führt zum sanften Abbruch des Merges, so dass er manuell behandelt werden kann.

Wir gehen durch ein kurzes Beispiel für dieses Kommando. An einigen Dateien im Arbeitsverzeichnis wurden Änderungen vorgenommen:

$ git status
# On branch master
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#	modified:   README.textile
#	modified:   Rakefile
#	modified:   TODO
#
no changes added to commit (use "git add" and/or "git commit -a")

Wenn ich git commit -a an dieser Stelle ausführe, würden alle Dateien zur neuen Übergabe (Commit) hinzugefügt. Ich möchte jedoch die Änderungen in einer Datei temporär ignorieren:

$ git update-index --assume-unchanged README.textile
$ git status
# On branch master
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#	modified:   Rakefile
#	modified:   TODO
#
no changes added to commit (use "git add" and/or "git commit -a")

Wenn wir die Arbeit also jetzt committen und dann den Schalter deaktivieren, können wir sehen, dass Git die ursprünglichen Änderungen an README behalten hat. Von da an könntest du die Änderungen zu einer neuen Übergabe (Commit) hinzufügen oder auf die aktuelle Kopie zurückgreifen.

$ git update-index --no-assume-unchanged README.textile
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 4 commits.
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#	modified:   README.textile
#
no changes added to commit (use "git add" and/or "git commit -a")

Sieh hier in der Man Page für git update-index nach. Falls du einen weiteren cleveren Trick zum Index kennst, hinterlasse einen Kommentar oder Sende einen Tip!