отменить обновление git-index --assume-unchanged

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

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

теперь, как вы отменяете его, чтобы за ними снова наблюдали? (назовем это un-assume)

8 ответов


чтобы получить undo / show dir's / files, которые настроены на предположение-unchanged запустите это:

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

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

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


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

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

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

git hide myfile.ext

или

git unhide myfile.ext

этой ресурс был очень полезным


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

git update-index --help

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

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

git update-index --really-refresh 

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

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

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

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

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


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

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

добавлять к @adardesignответ, если вы хотите сбросить все файлы, которые были добавлены в 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 предотвратит преждевременное завершение команды в случае, если некоторые файлы в цикле имеют ошибки.


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

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

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

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

до список всех файлы, которые предполагают-без изменений:

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

в сбросить все предположим-неизмененные файлы вернулись к норме:

git update-index --really-refresh

ссылки

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

[alias]
    hide = update-index --assume-unchanged
    unhide = update-index --no-assume-unchanged
    unhide-all = update-index --really-refresh
    hidden = ls-files -v

чтобы сделать его легко выполнить список всех файлов, которые предполагают-без изменений в оболочке, которая поддерживает псевдоним (например, bash), создайте псевдоним такой as:

alias git-hidden="git hidden | grep '^[a-z]' | cut -c3-"

для оболочек без псевдонима скрипт может сделать трюк.


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

  1. перейти к окну фиксации.
  2. нажмите на выпадающее менюизменения каталог.
  3. выберите показать assummed-неизмененные файлы.
  4. щелкните правой кнопкой мыши файл, который вы хотите unassumme.
  5. выберите не assumme без изменений.

вы сделали.