2017-07-10 3 views
3

Immer wenn ich eine Arbeitstask mache, erstelle ich eine lokale Verzweigung in Git, dann muss ich eine Reihe von Konfigurationsdateien (hauptsächlich Verbindungszeichenfolgen zu Datenbanken) ändern, um auf meine lokale Umgebung vor die eigentliche Arbeit. Diese Änderungen möchte ich nicht später in das Repository verschieben, nachdem ich meine Aufgabe beendet habe.Vorübergehend verstecken einige geänderte Dateien in Git

Eigentlich würde ich es vorziehen, sie herauszufiltern, wenn Sie geänderte Dateien überprüfen (git status).

Ich könnte eine erste Festschreibung in meinem lokalen Zweig machen und es vor dem Drücken zurücksetzen. Aber ich vergesse es. Gibt es dafür einen besseren Weg?

Antwort

3

Die empfohlene Lösung zu verwenden ist:

git update-index --skip-worktree <file> 

Documentation:

- [no-] skip-worktree

Wenn eines dieser Flags angegeben wird, werden die Objektnamen für die Pfade aufgezeichnet nicht aktualisiert. Stattdessen setzen und deaktivieren diese Optionen das Bit "Skip-Worktree" für die Pfade. Siehe Abschnitt "Skip-worktree bit" unten für weitere Informationen.

Und die skip-worktree bit:

Überspringen-worktree Bit

überspringen-worktree Bit kann in einer (langen) Satz definiert werden: Wenn Sie einen Eintrag zu lesen, wenn es markiert ist als skip-worktree, dann gibt Git vor, dass seine Arbeitsverzeichnis-Version aktuell ist und liest stattdessen die Index-Version.

Um es genauer auszudrücken, bedeutet "lesen" das Überprüfen auf Dateiexistenz, Lesen von Dateiattributen oder Dateiinhalt. Die Version des Arbeitsverzeichnisses kann vorhanden oder nicht vorhanden sein. Falls vorhanden, kann der Inhalt mit der Indexversion übereinstimmen oder nicht. Das Schreiben wird von diesem Bit nicht beeinflusst, die Inhaltssicherheit hat immer noch oberste Priorität. Beachten Sie, dass Git die Arbeitsverzeichnisdatei aktualisieren kann, die als skip-worktree gekennzeichnet ist, wenn dies sicher ist (dh die Arbeitsverzeichnisversion stimmt mit der Indexversion überein)

Obwohl dieses Bit einem unveränderten Bit ähnelt, ist sein Ziel unterscheidet sich von unveränderten Bits. Skip-Worktree hat auch Vorrang vor dem angenommen-unveränderten Bit, wenn beide gesetzt sind.

Die --assume-unchanged Flag wird zur Leistungsverbesserung vorgesehen, während --skip-worktree für Fälle gedacht, wo Sie die Datei nicht ändern und git wollen es trotzdem überspringen.

rückgängig zu verwenden:

git update-index --no-skip-worktree <file> 
3

vorübergehend Änderungen in einer bestimmten Datei zu ignorieren, können Sie dies tun:

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

Wenn Sie Änderungen verfolgen wieder davon wollen, müssen Sie nur ausführen:

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