Кто коснулся моего git предполагаемого без изменений бита?
У меня есть некоторый файл в моем репо, который я установил на неизмененном бите:
git update-index --assume-unchanged someFile.txt
Время от времени, после некоторой работы с репо, этот бит не будет удален, и файл будет автоматически не assume-unchanged
.
Кто прикасается к нему? Как я могу сделать это постоянным, пока я явно не скажу git:
git update-index --no-assume-unchanged someFile.txt
Что здесь происходит?
Изменить. Я использую бит-бит, не изменяющий значение, в конфигурационных файлах, которые меняются локально, и никогда не должны быть зафиксированы, не говоря уже о том, что вытеснили вверх по потоку. Я не хочу видеть их в git status
и нигде, если я явно не скажу git Я хочу отредактировать и зафиксировать одну из них.
Изменить: ОК, я думаю, мне удалось воспроизвести проблему.
Я передал файл из другого репо (который не имел его как --assume-unchanged
), натягивал мое репо, и, конечно же, бит был reset.
Возникают два вопроса:
- Можно ли установить этот бит в центральном авторитарном репо, чтобы он распространялся на все репозитории?
- Можно ли сделать этот бит липким даже после удаленных изменений?
Ответы
Ответ 1
IIRC, если вы проигнорируете файл с версией, он будет вести себя так. Вы можете игнорировать все рабочие деревья из .gitignore
или, в частности, дерево работы из .git/info/exclude
(да, это работает, но не предназначено для выполнения действий).
Ответ 2
Кажется, что --skip-worktree
+ разреженная проверка может позволить такое поведение.
С git считать неизменным vs skip worktree - игнорируя символическую ссылку (с некоторыми контекстными изменениями):
- Установите
core.sparseCheckout
в значение true для репозитория. - Создайте файл
.git/info/sparse-checkout
, содержащий два шаблона: *
, чтобы включить все и !/path/to/someFile.txt
, чтобы исключить локальный файл "someFile.txt". - Теперь вручную установите бит skip-worktree в файл someFile.txt.
Теперь вы можете продолжать, не опасаясь, что git автоматически зафиксирует каталог, но заметьте, что вы все равно столкнетесь с проблемами, если кто-то явно запускает git add в каталоге или любом файле в нем.
Дальнейшие исследования в странице руководства, по-видимому, указывают на то, что --skip-worktree
более подходит для запроса использования.