Некоторое время назад я сделал это, чтобы игнорировать изменения в файле, отслеживаемом git:
git update-index --skip-worktree <file>
Теперь я на самом деле хочу зафиксировать изменения в этом файле для источника. Как мне отменить эффекты skip-worktree
?
Ответы:
Ага! Я просто хочу:
источник
Согласно http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html , используйте
git ls-files -v
чтобы увидеть файлы «предположим, что без изменений» и «пропустить рабочее дерево», помеченные специальной буквой. Файлы "skip-worktree" помечены
S
.Редактировать : как упоминал @amacleod , создание псевдонима для перечисления всех скрытых файлов - хороший прием, чтобы вам не нужно было его запоминать. Я использую
alias hidden="git ls-files -v | grep '^S'"
в своем .bash_profile. Работает отлично!источник
git ls-files -v | grep '^S'
для отображения только те файлы, которые я «спрятал» с помощью skip-worktree. Надеялся сделать псевдоним «скрытым» для этой команды, но перенаправление канала в псевдоним, похоже, не сработало.!
. Как это[alias] ignored = !git ls-files -v | grep "^S"
проверено, работает.grep
, я не знаю. Зависит от вашей оболочки, я думаю. Git Bash действительно идет сgrep
, я думаю.'
не работал, но"
работал, то естьgit ls-files -v | grep "^S"
Если вы хотите отменить все файлы, которые были применены, пропустите рабочее дерево, вы можете использовать следующую команду:
git ls-files -v
распечатает все файлы с их статусомgrep -i ^S
будет фильтровать файлы и выбирать только пропустить рабочее дерево (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 )
И для справки также противоположная команда, чтобы скрыть файлы:
источник
Для тех, кто использует Toritise Git:
TortoiseGit > Check for modifications
Show ignore local changes flagged files
. Вы должны увидеть файл, который вы проигнорировали (или все файлы, которые вы проигнорировали, если вы щелкнули правой кнопкой мыши по папке)Unflag as skip-worktree and assume-unchanged
источник
Для всех вас, кто любит псевдонимы Bash, вот мой набор, чтобы управлять ими всеми (на основе C0DEF52)
источник
Этот ответ предназначен для менее технических людей, использующих Windows.
Если вы не помните / не знаете, в каких файлах вы нажали «skip-worktree», используйте:
Чтобы исправить вашу проблему:
Вы можете перейти к файлам -> щелкнуть правой кнопкой мыши -> восстановить предыдущую версию -> нажать на вкладку «git» сверху -> снять флажок «skip-worktree» -> нажать «Применить» внизу.
Если файлов слишком много, чтобы исправить вручную, вам нужно обратиться к другим ответам.
источник