Sicher, ich mache genau das von Zeit zu Zeit mit
git update-index --assume-unchanged [<file> ...]
Rückgängig machen und die Verfolgung erneut beginnen (wenn Sie vergessen haben, welche Dateien nicht verfolgt wurden), siehe diese Frage ):
git update-index --no-assume-unchanged [<file> ...]
Einschlägige Unterlagen :
--[no-]assume-unchanged
Wenn dieses Flag angegeben ist, werden die für die Pfade aufgezeichneten Objektnamen nicht aktualisiert. Stattdessen wird mit dieser Option das Bit "Unverändert übernehmen" für die Pfade gesetzt/entfernt. Wenn das "assume unchanged"-Bit aktiviert ist, verspricht der Benutzer, die Datei nicht zu ändern, und erlaubt Git, davon auszugehen, dass die Arbeitsbaumdatei mit dem übereinstimmt, was im Index aufgezeichnet ist. Wenn Sie die Arbeitsbaumdatei ändern wollen, müssen Sie das Bit deaktivieren, um Git zu informieren. Dies ist manchmal hilfreich, wenn man mit einem großen Projekt auf einem Dateisystem arbeitet, das sehr langsam ist. lstat(2)
Systemaufruf (z.B. cifs).
Git scheitert (gnädigerweise), wenn es diese Datei im Index ändern muss, z.B. beim Einbinden eines Commits; wenn also die angenommene, nicht nachverfolgte Datei stromaufwärts geändert wird, müssen Sie die Situation manuell handhaben.
Fail gracefully bedeutet in diesem Fall, dass wenn es irgendwelche Änderungen an der Datei gibt (legitime Änderungen, etc.), wenn Sie einen Pull durchführen, wird es sagen:
$ git pull
…
From https://github.com/x/y
72a914a..106a261 master -> origin/master
Updating 72a914a..106a261
error: Your local changes to the following files would be overwritten by merge:
filename.ext
und wird sich weigern, zu fusionieren.
Sie können dieses Problem lösen, indem Sie entweder Ihre lokalen Änderungen rückgängig machen, z.B. hier:
$ git checkout filename.ext
dann wieder ziehen und die lokale Datei erneut ändern, oder Sie können die –no-assume-unchanged
und Sie können an diesem Punkt normales Auslagern und Zusammenführen usw. durchführen.