it-swarm.com.ru

Отменить git update-index --assume-неизменный <файл>

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

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

Теперь, как вы отменяете это, чтобы они снова смотрели? (Давайте назовем это без предположения.)

374
adardesign

Чтобы отменить/показать каталоги/файлы, для которых установлено, что они не изменяются, запустите это :

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

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

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

491
adardesign

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

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

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

git hide myfile.ext

или же

git unhide myfile.ext

Этот ресурс был очень полезен

77
adswebwork

функция 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>
36
Ankit Vishwakarma

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

32
hobbs

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

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

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

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

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

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

To список всех файлов, которые не изменяются:

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

Чтобы упростить выполнение списка всех файлов, которые не изменяются в командной консоли, поддерживающей alias (например, bash), создайте псевдоним, например:

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

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

13
Will Cain

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

11
sagunms

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

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

Вы сделали.

2
Shivang Gupta

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

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

Надеюсь, кому-то это тоже пригодится.

0
Tyagi Akhilesh