Как сделать файл `--assume-неизмененным` в проекте?

У меня есть файл конфигурации: conf/local.conf Я запускаю следующую команду для этого:

git update-index --assume-unchanged local.conf

и это нормально, пока я не переключусь на другую ветку или не потяну.

Как сохранить --assume-unchanged флаг между ветками?

UPD
Некоторые примеры того, что происходит:

$ git checkout 296-ToS-component 
error: Your local changes to the following files would be overwritten by checkout:
    conf/local.conf
Please commit your changes or stash them before you switch branches.
Aborting
$ git checkout -f 296-ToS-component 
error: Entry 'conf/local.conf' not uptodate. Cannot merge.

Я хочу, чтобы это работало следующим образом:

  1. conf/local.conf сохранен
  2. Филиал переключен
  3. conf/local.conf заменяется сохраненной версией

2 ответа

Не использовать --assume-unchanged это должно использоваться для проблемы производительности для больших файлов, не изменяющихся, и это дорого обходится при хешировании git status,

Что вы хотите --skip-worktree которые делают почти то же самое, но обрабатывают файлы, которые вы изменили, но не хотите фиксировать.

См. /questions/40782498/git-raznitsa-mezhdu-predpolozhim-bez-izmenenij-i-propustit-rabochee-derevo/40782503#40782503

И это, вероятно, (не уверен, но эй!, это то, что вы должны сделать...) решит вашу проблему...

Удалите предполагаемый неизмененный бит:

git update-index --no-assume-unchanged local.conf

Сохрани это:

git stash

Переключить ветку:

git checkout 296-ToS-component

Получить сохраненную версию:

git show stash@{0}:local.conf > local.conf

или объединить сохраненную версию с текущей версией:

git stash apply

и могут быть конфликты, которые можно решить вручную.

Установите бит предположения без изменений:

git update-index --assume-unchanged local.conf
Другие вопросы по тегам