У меня есть файл конфигурации: 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.
Я хочу, чтобы он работал следующим образом:
@phd: готово ........





Удалите бит предположения без изменений:
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
И от всего этого я хочу сбежать. Может есть вариант как rebase.autostash true?
@EugenKonkov Может быть, сделать функцию bash, которая принимает имя ветки и путь к файлу в качестве параметров.
Не используйте --assume-unchanged, который следует использовать из-за проблем с производительностью для больших файлов, которые не меняются, и которые требуют больших затрат на хэширование при выполнении git status.
Вам нужен --skip-worktree, который делает почти то же самое, но обрабатывает файлы, которые вы изменили, но не хотите фиксировать.
См. https://stackoverflow.com/a/13631525/717372
И это, вероятно, (не уверен, но эй !, это то, что вы должны сделать ...) решит вашу проблему ...
Вы не должны использовать
gcв вопросах, потому что это ваш локальный псевдоним не всегда понятен. Пожалуйста, редактировать вопрос и ответьтеgit checkout.