Klar, ich mache genau das von Zeit zu Zeit mit
git update-index --assume-unchanged [<file> ...]
So machen Sie das Tracking rückgängig und starten es erneut (wenn Sie vergessen haben, welche Dateien nicht mehr verfolgt wurden, lesen Sie diese Frage ):
git update-index --no-assume-unchanged [<file> ...]
Relevante Dokumentation :
- [no-] angenommen-unverändert
Wenn dieses Flag angegeben wird, werden die für die Pfade aufgezeichneten Objektnamen nicht aktualisiert. Stattdessen setzt / deaktiviert diese Option das Bit "Unverändert annehmen" für die Pfade. Wenn das Bit "Unverändert annehmen" aktiviert ist, verspricht der Benutzer, die Datei nicht zu ändern, und lässt Git davon ausgehen, dass die Arbeitsbaumdatei mit den im Index aufgezeichneten übereinstimmt. Wenn Sie die Arbeitsbaumdatei ändern möchten, müssen Sie das Bit deaktivieren, um Git zu informieren. Dies ist manchmal hilfreich, wenn Sie mit einem großen Projekt in einem Dateisystem arbeiten, das einen sehr langsamen lstat(2)
Systemaufruf hat (z. B. cifs).
Git schlägt (ordnungsgemäß) fehl, wenn diese Datei im Index geändert werden muss, z. B. beim Zusammenführen in einem Commit. Wenn die angenommene, nicht verfolgte Datei vorgelagert geändert wird, müssen Sie die Situation daher manuell behandeln.
Ein ordnungsgemäßer Fehler bedeutet in diesem Fall, dass Änderungen an dieser Datei (legitime Änderungen usw.) beim Ziehen angezeigt werden:
$ 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.
An diesem Punkt können Sie dies überwinden, indem Sie entweder Ihre lokalen Änderungen rückgängig machen. Hier ist eine Möglichkeit:
$ git checkout filename.ext
Ziehen Sie dann erneut und ändern Sie Ihre lokale Datei erneut, oder stellen –no-assume-unchanged
Sie sie ein, und Sie können an diesem Punkt normales Verstecken und Zusammenführen usw. durchführen.