Vor einiger Zeit habe ich dies getan, um Änderungen an einer von git verfolgten Datei zu ignorieren:
git update-index --skip-worktree <file>
Jetzt möchte ich eigentlich Änderungen an dieser Datei in die Quelle übernehmen. Wie mache ich die Auswirkungen von skip-worktree
rückgängig?
Danke, Kevin
Aha! Ich will einfach:
git update-index --no-skip-worktree <file>
Gemäß http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html verwenden
git ls-files -v
um die Dateien "Unverändert übernehmen" und "Skip-Worktree" mit einem speziellen Buchstaben zu sehen. Die "Skip-Worktree" -Dateien sind mit S
markiert.
Edit: Wie @amacleod erwähnt, ist das Erstellen eines Alias zum Auflisten aller versteckten Dateien ein schöner Trick, damit Sie sich nicht daran erinnern müssen. Ich benutze alias hidden="git ls-files -v | grep '^S'"
in meinem .bash_profile. Es funktioniert super!
Wenn Sie alle Dateien rückgängig machen möchten, die zum Überspringen von Worktree verwendet wurden, können Sie den folgenden Befehl verwenden:
git ls-files -v | grep -i ^S | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
git ls-files -v
druckt alle Dateien mit ihrem Statusgrep -i ^S
filtert Dateien und wählt nur "Arbeitsbaum überspringen" (S) oder "Arbeitsbaum überspringen" aus und geht davon aus, dass die Änderungen nicht beachtet werdencut -c 3-
entfernt den Status und lässt nur Pfade zurück, wobei er vom 3. Zeichen bis zum Ende gehttr '\012' '\000'
ersetzt das Zeilenendezeichen (\ 012) durch das Nullzeichen (\ 000)xargs -0 git update-index --no-skip-worktree
übergibt alle durch Nullzeichen getrennten Pfade an git update-index --no-skip-worktree
, um sie rückgängig zu machenBasierend auf der @ GuidC0DE-Antwort, hier eine Version für Powershell (ich benutze posh-git )
git update-index --no-skip-worktree $(git ls-files -v | sls -pattern "^S"| %{$_.Line.Substring(2)})
Und als Referenz auch den entgegengesetzten Befehl, um die Dateien auszublenden:
git update-index --skip-worktree $(git ls-files --modified)
Für diejenigen, die Tortoise Git verwenden:
TortoiseGit > Check for modifications
.Show ignore local changes flagged files
prüfen. Sie sollten die Datei sehen, die Sie ignoriert haben (oder alle Dateien, die Sie ignoriert haben, wenn Sie mit der rechten Maustaste auf den Ordner geklickt haben).Unflag as skip-worktree and assume-unchanged
.