Viele Leute raten Ihnen, die git update-index --assume-unchanged
. Dies kann in der Tat eine gute Lösung sein, aber nur kurzfristig.
Wahrscheinlich wollen Sie Folgendes tun: git update-index --skip-worktree
.
(Die dritte Option, die Sie wahrscheinlich nicht wollen, ist: git rm --cached
. Ihre lokale Datei bleibt erhalten, wird aber als aus dem entfernten Repository entfernt markiert).
Was ist der Unterschied zwischen den ersten beiden Optionen?
assume-unchanged
soll es Ihnen ermöglichen, Änderungen an einer Datei vorübergehend auszublenden. Wenn Sie Änderungen an einer Datei verbergen wollen, die Datei ändern und dann einen anderen Zweig auschecken wollen, müssen Sie no-assume-unchanged
dann wahrscheinlich Versteckänderungen vorgenommen.
skip-worktree
folgt Ihnen, egal welchen Zweig Sie auschecken, mit Ihren Änderungen!
Anwendungsfall von assume-unchanged
Es wird davon ausgegangen, dass diese Datei nicht geändert werden sollte, und Sie erhalten eine sauberere Ausgabe, wenn Sie git status
. Aber wenn Sie in einen anderen Zweig auschecken, müssen Sie die Markierung zurücksetzen und die Änderungen vorher committen oder zwischenlagern. Wenn Sie mit aktivierter Option pullen, müssen Sie Konflikte lösen und Git wird nicht automatisch zusammenführen. Es verbirgt eigentlich nur Änderungen ( git status
zeigt Ihnen die markierten Dateien nicht an).
Ich verwende es gerne, wenn ich nur für eine Weile keine Änderungen mehr verfolgen und eine Reihe von Dateien übertragen möchte ( git commit -a
) im Zusammenhang mit dem dieselbe Änderung.
Anwendungsfall von skip-worktree
Sie haben eine Einrichtungsklasse mit Parametern (z. B. einschließlich Passwörtern), die Ihre Freunde entsprechend ihrer Einrichtung ändern müssen.
- 1: Erstellen Sie eine erste Version dieser Klasse, füllen Sie Felder aus, die Sie ausfüllen können, und lassen Sie andere leer/null.
- 2: Commit und Push auf den Remote-Server.
- 3:
git update-index --skip-worktree MySetupClass.java
- 4: Aktualisieren Sie Ihre Konfigurationsklasse mit Ihren eigenen Parametern.
- 5: Gehen Sie zurück und arbeiten Sie an einer anderen Funktionalität.
Die Änderungen, die Sie vornehmen, werden Sie in jeder Branche begleiten. Achtung: Wenn Ihre Freunde diese Klasse ebenfalls ändern wollen, müssen sie die gleichen Einstellungen haben, da sonst ihre Änderungen in das entfernte Repository übertragen werden. Beim Ziehen sollte die entfernte Version der Datei die Ihre überschreiben.
PS: Machen Sie das eine oder das andere, aber nicht beides, da Sie sonst unerwünschte Nebenwirkungen haben. Wenn Sie eine andere Flagge ausprobieren wollen, sollten Sie zuerst die letztere deaktivieren.
22 Stimmen
Eine sehr nützliche Frage, aber ich bin neugierig, warum Sie nicht die Änderungen an der
.csproj
Datei, die ein wichtiger Bestandteil eines jeden Projekts ist. Änderungen an der.csproj.user
Datei oder eine.Publish.XML
Ich kann durchaus verstehen, dass Sie keine Dateien verfolgen wollen, aber ich frage mich, warum Sie nicht auch die.csproj
9 Stimmen
Vielleicht verwenden sie eine andere IDE?
4 Stimmen
Ironischerweise bin ich auf diesen Thread gestoßen, weil ich .suo-Dateien aus einem Repo entfernen, aber lokal behalten möchte. Für die Nachwelt: Bei der .Net-Entwicklung ist es erforderlich, .csproj-Dateien im Repo zu behalten, und diese Änderungen sollten immer nachverfolgt werden, es sei denn, Sie möchten den Zorn anderer Entwickler an Ihrem Projekt spüren. Wenn Sie sich unsicher sind, werfen Sie einen Blick auf das Gitignore Files Repo auf GitHub: github.com/github/gitignore/blob/master/VisualStudio.gitignore