2015-10-30 8 views
9

Ich verstehe nicht den Unterschied zwischen git rm --cached und .Unterschied zwischen `git rm --cached` und` git update-index --assume-unverändert`?

Ich bin mir bewusst, dass git rm --cached <file> wird eine Datei aus dem Staging-Bereich entfernen.

Und ich weiß, dass git update-index --assume-unchanged <file> auch dies tut.

Ich habe auch beide Befehle als Vorschläge zu ähnlichen Fragen hier auf SO angeboten.

Gibt es einen anderen Effekt von einem dieser beiden Befehle, der sie unterschiedlich macht?

+1

Bitte überprüfen Sie die Antwort unten gegeben, danke. –

+0

Entschuldigung, war Afk für einen Tag. – Hunle

Antwort

4

Der Befehl

git rm --cached <file> 

in einem Git-Zweigs zu untrack Dateien verwendet. Dieser Befehl entfernt die file aus dem Staging-Bereich und auch wird die Datei aus dem Repository beim nächsten Commit entfernen.

Der Befehl

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

wird auch die file aus dem Staging-Bereich verschwinden. Dieser Befehl ist jedoch anders, da er Git nur die Nummer mitteilt. ignorieren Sie alle Änderungen, die an der file vorgenommen wurden. Wenn Sie also die Datei festschreiben, bleibt sie ein Teil des Repositorys, vorausgesetzt, sie ist bereits vorhanden. Wenn Sie Git wollen wieder an die file die Änderungen vorgenommen, um zu sehen, können Sie dies ausführen:

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

Dies wird die Datei in den Staging-Bereich zurückzukehren, wenn sie da waren, als Sie assume-unchanged früher lief.

Hier ist ein link für git rm --cached, und hier ist ein link für git update-index --assume-unchanged.

+0

Unglücklicher Wortlaut: 'git update-index --assume-unverändert' wird * den * Eintrag der Datei nicht aus dem Index entfernen, sondern Git davon abhalten, diesen Eintrag mit der entsprechenden Datei im Dateisystem zu vergleichen. Ich nehme an, dass Sie hier vielleicht nur etwas Schlamperei haben, aber es ist eine wichtige ;-) Um meinen Punkt vielleicht klarer zu machen, "enthält" der Index anfangs (also direkt nach 'git read-tree') alle Dateien von das Baum-ish, das gerade eingelesen wurde. Daher macht Git "ein Auge zudrücken" zu einem Index-Eintrag nicht wirklich * entfernen * es. – kostix

+0

Hm. Ich verstehe deinen Standpunkt und es ist wichtig. Danke. Frage: Wenn ich also den 'git update-index - no-asimate-unverändert-Befehl ' vergesse, heißt das, dass meine Datei weiterhin ignoriert wird, bis ich mich daran erinnere? Wenn das so ist, macht mich das ein wenig nervös, diesen Befehl zu benutzen. – Hunle

+0

Auch auf der Seite 'git rm --help 'wurde nichts über das Entfernen der Datei aus dem Repository erwähnt. Haben Sie eine Quelle, um dies zu unterstützen, @TimBiegeleisen? – Hunle

Verwandte Themen