Ответ 1
Ага! Я просто хочу:
git update-index --no-skip-worktree <file>
Некоторое время назад я сделал это, чтобы игнорировать изменения в файле, отслеживаемом git:
git update-index --skip-worktree <file>
Теперь я действительно хочу зафиксировать изменения в этом файле для источника. Как отключить эффекты skip-worktree
?
Спасибо, Кевин
Ага! Я просто хочу:
git update-index --no-skip-worktree <file>
Согласно 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. Он отлично работает!
Если вы хотите отменить все файлы, которые были применены, пропустите рабочую строку, вы можете использовать следующую команду:
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
, чтобы отменитьОсновываясь на ответе @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)
Для тех, кто использует Tortoise Git, щелкните правой кнопкой мыши на папке и выберите TortoiseGit > Check for modifications
, затем установите флажок Show ignore local changes flagged files
.
Если вы хотите прекратить игнорировать файл, щелкните правой кнопкой мыши по нему и выберите Unflag as skip-worktree and assume-unchanged
.
Для тех, кто использует Toritise Git:
TortoiseGit > Check for modifications
Show ignore local changes flagged files
. Вы должны увидеть файл, который вы проигнорировали (или все файлы, которые вы проигнорировали, если вы щелкнули правой кнопкой мыши по папке)Unflag as skip-worktree and assume-unchanged