То, как вы Git игнорируете просмотр/отслеживание определенного файла/файла. вы просто запускаете это:
git update-index --assume-unchanged <file>
Теперь, как вы отменили его, чтобы их снова смотрели? (Позвольте называть его un-предполагать.)
То, как вы Git игнорируете просмотр/отслеживание определенного файла/файла. вы просто запускаете это:
git update-index --assume-unchanged <file>
Теперь, как вы отменили его, чтобы их снова смотрели? (Позвольте называть его un-предполагать.)
Чтобы получить undo/show dir/files, которые настроены на принятие без изменений, запустите это:
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
Как установить псевдоним (если вы еще не знаете):
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-
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>
Я предполагаю (хе), что вы имели в виду --assume-unchanged
, так как я не вижу никакой опции --assume-changed
. Обратным к --assume-unchanged
является --no-assume-unchanged
.
Синтезировать превосходные оригинальные ответы от @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-
Если вы хотите отменить все файлы, которые были применены, не изменяются с любым статусом, не только кешированный (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
, чтобы отменитьДобавляя к @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
предотвратит преждевременное завершение команды в случае, если некоторые файлы в цикле имеет ошибки.
Если вы используете Git Расширения, выполните следующие шаги:
Вы закончили.
Здесь ничего нет. Но хотел бы добавить свои 2 цента. Время от времени я запускаю сборку, и она меняет много файлов, а затем я хочу что-то сработать, поэтому эта команда мне очень помогает.
git update-index --assume-unchanged 'git status | grep modified | sed 's|modified:||g'| xargs'
Надеюсь, что кто-то еще найдет это полезным.