Отменить git update-index --skip-worktree

Некоторое время назад я сделал это, чтобы игнорировать изменения в файле, отслеживаемом git:

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

Теперь я действительно хочу зафиксировать изменения в этом файле для источника. Как отключить эффекты skip-worktree?

Спасибо, Кевин

Ответ 1

Ага! Я просто хочу:

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

Ответ 2

Согласно http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html, используйте

git ls-files -v

чтобы увидеть файлы "предполагать без изменений" и "skip-worktree", отмеченные специальной буквой. Файлы "skip-worktree" помечены S.

Изменить. Как упоминалось @amacleod, создание псевдонима для перечисления всех скрытых файлов - хороший трюк, чтобы вы могли Не нужно это помнить. Я использую alias hidden="git ls-files -v | grep '^S'" в моем .bash_profile. Он отлично работает!

Ответ 3

Если вы хотите отменить все файлы, которые были применены, пропустите рабочую строку, вы можете использовать следующую команду:

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 распечатает все файлы с их статусом
  • grep -i ^S будет фильтровать файлы и выбирать только пропускать worktree (S) или пропускать рабочую строку и принимать без изменений (-ых), -i означает игнорировать регистр в случае
  • cut -c 3- удалит статус и оставит только пути, вырезая из 3-го символа в конец
  • tr '\012' '\000' заменит символ конца строки (\ 012) на нулевой символ (\ 000)
  • xargs -0 git update-index --no-skip-worktree будет передавать все пути, разделенные нулевым символом, на git update-index --no-skip-worktree, чтобы отменить

Ответ 4

Основываясь на ответе @GuidC0DE, вот версия для Powershell (я использую posh-git)

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

И для справки также противоположная команда, чтобы скрыть файлы:

git update-index --skip-worktree $(git ls-files --modified)

Ответ 5

Для тех, кто использует Tortoise Git, щелкните правой кнопкой мыши на папке и выберите TortoiseGit > Check for modifications, затем установите флажок Show ignore local changes flagged files.

Если вы хотите прекратить игнорировать файл, щелкните правой кнопкой мыши по нему и выберите Unflag as skip-worktree and assume-unchanged.

Ответ 6

Для тех, кто использует Toritise Git:

  1. Щелкните правой кнопкой мыши папку или конкретный файл, затем выберите TortoiseGit > Check for modifications
  2. Только галочка Show ignore local changes flagged files. Вы должны увидеть файл, который вы проигнорировали (или все файлы, которые вы проигнорировали, если вы щелкнули правой кнопкой мыши по папке)
  3. Щелкните правой кнопкой мыши по файлу и выберите Unflag as skip-worktree and assume-unchanged