Undo git update-index --assume-unchanged <file>

То, как вы Git игнорируете просмотр/отслеживание определенного файла/файла. вы просто запускаете это:

git update-index --assume-unchanged <file>

Теперь, как вы отменили его, чтобы их снова смотрели? (Позвольте называть его un-предполагать.)

Ответ 1

Чтобы получить undo/show dir/files, которые настроены на принятие без изменений, запустите это:

git update-index --no-assume-unchanged <file>

Чтобы получить список файлов/файлов dir, которые assume-unchanged, выполните:

git ls-files -v|grep '^h'

Ответ 2

Если вы часто используете эту команду - возможно, вы захотите использовать для нее и псевдоним. Добавьте к своему глобальному .gitconfig:

[alias]
    hide = update-index --assume-unchanged
    unhide = update-index --no-assume-unchanged

Как установить псевдоним (если вы еще не знаете):

git config --configLocation alias.aliasName 'command --options'

Пример:

git config --global alias.hide 'update-index --assume-unchanged'
git config... etc

После сохранения этого в .gitconfig вы можете запустить команду очистки.

git hide myfile.ext

или

git unhide myfile.ext

Эта документация по git была очень полезной.

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

[alias]
    hidden = ! git ls-files -v | grep '^h' | cut -c3-

Ответ 3

git Функция update-index имеет несколько параметров, которые вы можете найти, как показано ниже:

git update-index --help

Здесь вы найдете различные опции - как обращаться с индексом обновления функции.

[если вы не знаете имя файла]

git update-index --really-refresh 

[если вы знаете имя файла]

git update-index --no-assume-unchanged <file>

вернет все файлы, которые были добавлены в список игнорирования.

git update-index --assume-unchanged <file>

Ответ 4

Я предполагаю (хе), что вы имели в виду --assume-unchanged, так как я не вижу никакой опции --assume-changed. Обратным к --assume-unchanged является --no-assume-unchanged.

Ответ 5

Синтезировать превосходные оригинальные ответы от @adardesign, @adswebwork и @AnkitVishwakarma и комментарии от @Bdoserror, @Retsam, @seanf и @torek, с дополнительными ссылками на документацию и краткими псевдонимами...

Основные команды

Чтобы восстановить файл, который без изменений, вернулся в нормальное состояние:

git update-index --no-assume-unchanged <file>

Чтобы перечислить все файлы, которые не были изменены:

git ls-files -v | grep '^[a-z]' | cut -c3-

Чтобы вернуть все файлы без изменений в нормальное состояние:

git ls-files -v | grep '^[a-z]' | cut -c3- | xargs git update-index --no-assume-unchanged --

Примечание: Эта команда, которая была указана в другом месте, похоже, больше не сбрасывает все предполагаемые неизмененные файлы (я полагаю, она использовалась и ранее указывала это как решение):

git update-index --really-refresh

Ярлыки

Чтобы упростить выполнение этих общих задач в git, добавьте/обновите следующий раздел псевдонима для .gitconfig для своего пользователя (например, ~/.gitconfig в системе * nix или macOS):

[alias]
    hide = update-index --assume-unchanged
    unhide = update-index --no-assume-unchanged
    unhide-all = ! git ls-files -v | grep '^[a-z]' | cut -c3- | xargs git update-index --no-assume-unchanged --
    hidden = ! git ls-files -v | grep '^[a-z]' | cut -c3-

Ответ 6

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

git ls-files -v | grep '^[a-z]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
  • git ls-files -v распечатает все файлы с их статусом
  • grep '^[a-z]' будет фильтровать файлы и выбирать только без изменений
  • cut -c 3- удалит статус и оставит только пути, вырезая из 3-го символа в конец
  • tr '\012' '\000' заменит символ конца строки (\ 012) на нулевой символ (\ 000)
  • xargs -0 git update-index --no-assume-unchanged будет передавать все пути, разделенные нулевым символом, на git update-index --no-assume-unchanged, чтобы отменить

Ответ 7

Добавляя к @adardesign ответ, если вы хотите reset все файлы, которые были добавлены в список assume-unchanged на no-assume-unchanged за один раз, вы можете сделать следующее:

git ls-files -v | grep '^h' | sed 's/^..//' | sed 's/\ /\\ /g' | xargs -I FILE git update-index --no-assume-unchanged FILE || true

Это просто вычеркнет два символа, выводимых из grep, т.е. "h ", затем откройте любые пробелы, которые могут присутствовать в именах файлов, и, наконец, || true предотвратит преждевременное завершение команды в случае, если некоторые файлы в цикле имеет ошибки.

Ответ 8

Если вы используете Git Расширения, выполните следующие шаги:

  • Перейдите в окно фиксации.
  • Нажмите раскрывающееся меню с именем Изменения рабочего каталога.
  • Выберите опцию Показать необязательные файлы.
  • Щелкните правой кнопкой мыши файл, который вы хотите разобрать.
  • Выберите Не используйте без изменений.

Вы закончили.

Ответ 9

Здесь ничего нет. Но хотел бы добавить свои 2 цента. Время от времени я запускаю сборку, и она меняет много файлов, а затем я хочу что-то сработать, поэтому эта команда мне очень помогает.

git update-index --assume-unchanged 'git status | grep modified | sed 's|modified:||g'| xargs'

Надеюсь, что кто-то еще найдет это полезным.