webentwicklung-frage-antwort-db.com.de

Git update-index --skip-worktree rückgängig machen

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

109
Kevin Burke

Aha! Ich will einfach:

git update-index --no-skip-worktree <file>
143
Kevin Burke

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!

30
Stefan Anca

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
  1. git ls-files -v druckt alle Dateien mit ihrem Status
  2. grep -i ^S filtert Dateien und wählt nur "Arbeitsbaum überspringen" (S) oder "Arbeitsbaum überspringen" aus und geht davon aus, dass die Änderungen nicht beachtet werden
  3. cut -c 3- entfernt den Status und lässt nur Pfade zurück, wobei er vom 3. Zeichen bis zum Ende geht
  4. tr '\012' '\000' ersetzt das Zeilenendezeichen (\ 012) durch das Nullzeichen (\ 000)
  5. 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 machen
14
C0DEF52

Basierend 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)
2
eXavier

Für diejenigen, die Tortoise Git verwenden:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner oder die bestimmte Datei und wählen Sie TortoiseGit > Check for modifications.
  2. Nur 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).
  3. Klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie Unflag as skip-worktree and assume-unchanged.
0
user276648