То, как вы Git игнорируете просмотр / отслеживание определенного каталога / файла. вы просто запустите это:
git update-index --assume-unchanged <file>
Теперь, как вы отмените это, чтобы они смотрели снова? (Давайте назовем это без предположения.)
git
version-control
git-index
adardesign
источник
источник
Ответы:
Чтобы получить отменить / показать каталоги / файлы, для которых установлено, что они не изменяются, запустите :
git update-index --no-assume-unchanged <file>
Чтобы получить список каталогов / файлов, которые
assume-unchanged
запускаются следующим образом :git ls-files -v|grep '^h'
источник
git ls-files -v|grep '^h'|cut -c3-
, который даст вам только имена файлов без префикса «h».assume-unchanged
, просто используйтеgit update-index --really-refresh
. С помощью этой команды вам не нужноgit ls-files
сначала искать файлы .Если вы часто используете эту команду - возможно, вы захотите использовать для нее и псевдоним. Добавьте к своему глобальному
.gitconfig
:Как установить псевдоним (если вы еще не знаете):
Пример:
После сохранения этого
.gitconfig
вы можете запустить команду очистки.или
Эта документация Git была очень полезной.
Согласно комментариям, это также полезный псевдоним, чтобы узнать, какие файлы в настоящее время скрыты:
источник
hidden = ! git ls-files -v | grep '^h' | cut -c3-
Функция git update-index имеет несколько опций, которые вы можете найти, набрав, как показано ниже:
Здесь вы найдете различные варианты - как справиться с функцией update-index.
[если вы не знаете имя файла]
[если вы знаете имя файла]
вернет все файлы, которые были добавлены в список игнорирования через.
источник
git update-index --no-assume-unchanged <file>
спасли мою жизнь .. хорошо, я мог просто синхронизировать папку снова, но я действительно хотел "реальное" решение этой проблемы.Я предполагаю (хех), что вы имели в виду
--assume-unchanged
, так как я не вижу никакой--assume-changed
возможности. Инверсия--assume-unchanged
есть--no-assume-unchanged
.источник
Синтезировать превосходные оригинальные ответы от @adardesign, @adswebwork и @AnkitVishwakarma и комментарии от @Bdoserror, @Retsam, @seanf и @torek, с дополнительными ссылками на документацию и краткими псевдонимами ...
Основные команды
Чтобы вернуть файл, который предполагается неизменным, обратно в нормальное состояние:
Чтобы вывести список всех файлов, которые предполагается неизменными:
Чтобы сбросить все предполагаемые неизмененные файлы обратно в нормальное состояние:
Примечание. Эта команда, которая была указана в другом месте, похоже, больше не сбрасывает все предполагаемые неизмененные файлы (я полагаю, что она использовалась и ранее перечисляла ее как решение):
Ярлыки
Чтобы облегчить выполнение этих общих задач в git, добавьте / обновите следующий раздел псевдонимов
.gitconfig
для вашего пользователя (например,~/.gitconfig
в системе * nix или macOS):источник
git hidden
вы можете добиться того же эффекта без псевдонимов или сценариев оболочки, используя!
вот так:hidden = ! git ls-files -v | grep '^h' | cut -c3-
--really-refresh
не очищает (или больше не делает, возможно, однажды) очистку флагов, предполагающих неизменность, в индексных файлах.Если вы хотите отменить все примененные файлы, предполагая, что они не были сохранены с каким-либо состоянием, а не только кэшированы (git помечает их символом в нижнем регистре), вы можете использовать следующую команду:
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
ответ, если вы хотите сбросить все файлы, которые были добавлены вassume-unchanged
список заno-assume-unchanged
один раз, вы можете сделать следующее:Это просто удалит два символа, выведенных из grep, т. Е.
"h "
Затем исключит все пробелы, которые могут присутствовать в именах файлов, и, наконец|| true
, предотвратит преждевременное завершение команды в случае ошибок в некоторых файлах цикла.источник
Если вы используете Git Extensions , выполните следующие действия:
Вы сделали.
источник
Ничто здесь не покрыто. Но хотел бы добавить свои 2 цента. Иногда я запускаю сборку, и она меняет множество файлов, а затем я хочу что-то поработать, поэтому эта команда мне очень помогает.
git update-index --assume-unchanged `git status | grep modified | sed 's|modified:||g'| xargs`
Надеюсь, кому-то это тоже пригодится.
источник
.gitignore
чтобы игнорировать ваши артефакты сборки..gitignore
но это иногда, по моему опыту не достаточно. Но я понимаю контекст, в котором вы говорите это.Ни одно из решений не работало для меня в Windows - кажется, что он использует заглавные буквы,
H
а неh
статус файла, а команда grep требует дополнительной каретки, которая^
также представляет начало строки и отрицательный знак следующего символа.Решение для Windows
git ls-files -v | grep '^^H'
перечислить все некэшированные файлыgit ls-files -v | grep '^^H' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
отменить пропуски файлов всех файлов, которые были сделаны черезupdate-index --skip-worktree
git ls-files -v | grep '^^H]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
отменить пропуски файлов всех файлов, которые были сделаны черезupdate-index --assume-unchanged
git ls-files -v | grep '^^H'
снова вывести список всех некэшированных файлов и проверить, сработали ли вышеуказанные команды - теперь это ничего не должно возвращатьисточник
Если вы используете eclipse, вам может пригодиться следующее:
источник