Cofnij git update-index --skip-worktree

Jakiś czas temu zrobiłem to, aby zignorować zmiany w pliku śledzonym przez git:

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

Teraz chcę zatwierdzić zmiany w tym pliku do źródła. Jak usunąć skutki działania skip-worktree?

Dzięki, Kevin

 100
Author: Kevin Burke, 2012-06-21

4 answers

Aha! Po prostu chcę:

git update-index --no-skip-worktree <file>
 131
Author: Kevin Burke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-21 03:43:17

Zgodnie z http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html , użyj

git ls-files -v

Aby zobaczyć pliki" Załóżmy bez zmian "i" pomiń-obszar roboczy " oznaczone specjalną literą. Pliki "skip-worktree" są oznaczone S.

Edit : Jak wspomniano @amacleod, Tworzenie aliasu do wyświetlania wszystkich ukrytych plików jest fajną sztuczką, aby nie trzeba było jej pamiętać. Używam alias hidden="git ls-files -v | grep '^S'" w moim .bash_profile. Działa świetnie!

 30
Author: Stefan Anca,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:16

Jeśli chcesz cofnąć wszystkie pliki, które zostały zastosowane pomiń drzewko robocze, możesz użyć następującego polecenia:

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 wyświetli wszystkie pliki z ich statusem
  2. grep -i ^S filtruje pliki i wybiera tylko pomiń drzewa robocze lub Pomiń drzewa robocze i przyjmuje niezmienione, - i znaczy ignoruj rozróżnianie wielkości liter
  3. cut -c 3- usunie status i pozostawi tylko ścieżki, przecinając od znaku 3 do końca
  4. tr '\012' '\000' zastąpi znak końca linii (\012) na zero znak (\000)
  5. xargs -0 git update-index --no-skip-worktree przekaże wszystkie ścieżki oddzielone znakiem zero do git update-index --no-skip-worktree, aby cofnąć
 13
Author: C0DEF52,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-01 07:34:59

Na podstawie odpowiedzi @GuidC0DE, oto wersja dla Powershell (używam posh-git )

git update-index --no-skip-worktree $(git ls-files -v | sls -pattern "^S"| %{$_.Line.Substring(2)})

I dla odniesienia również odwrotne polecenie ukrywania plików:

git update-index --skip-worktree $(git ls-files --modified)
 1
Author: eXavier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-10 09:19:25