Подтвердить что ты не робот

Кто коснулся моего 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.

Возникают два вопроса:

  • Можно ли установить этот бит в центральном авторитарном репо, чтобы он распространялся на все репозитории?
  • Можно ли сделать этот бит липким даже после удаленных изменений?
4b9b3361

Ответ 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 более подходит для запроса использования.