Кажется, что файл все еще отслеживается после запуска `git update-index --assume-unchanged <file>`
Я выполнил команду
git update-index --assume-unchanged .\src\main\resources\application.properties
в моем локальном каталоге, а
application.properties
файл исчез из
Changes
раздел
Source Control
в VS Code, как я и ожидал.
Однако разница по-прежнему показывает красные удаления и зеленые добавления, как будто файл все еще отслеживается. <- это показано на скриншоте ниже
Я также не могу переключать ветки по той причине, что «изменения будут перезаписывать этот файл»
Есть идеи, почему это происходит? Мне нужна базовая версия в моем удаленном репозитории, которую я могу изменить локально без отслеживания изменений.
Я видел
--skip-worktree
вариант и попробовал
git update-index --skip-worktree .\src\main\resources\application.properties
, но получили те же результаты.
Вот команды и вывод git
PS C:\r\Body-Tracking-Uploader> git update-index --assume-unchanged .\src\main\resources\application.properties
PS C:\r\Body-Tracking-Uploader> git status
On branch upload-exerciseInfo-aws
Your branch is up to date with 'origin/upload-exerciseInfo-aws'.
nothing to commit, working tree clean
PS C:\r\Body-Tracking-Uploader> git branch
main
* upload-exerciseInfo-aws
PS C:\r\Body-Tracking-Uploader> git checkout main
error: Your local changes to the following files would be overwritten by checkout:
src/main/resources/application.properties
Please commit your changes or stash them before you switch branches.
Aborting
PS C:\r\Body-Tracking-Uploader>
2 ответа
Вы ищете способ игнорировать изменения в отслеживаемых файлах, и причина, по которой ни один из опробованных вами вариантов не работает, заключается в том, что Git не поддерживает это, как указано в FAQ Git:
Git не предоставляет возможности для этого. Причина в том, что если Git необходимо перезаписать этот файл, например, во время проверки, он не знает, являются ли изменения в файле ценными и должны ли они сохраняться, или же они неактуальны и могут быть безопасно уничтожены. Следовательно, он должен выбирать безопасный путь и всегда сохранять их.
Заманчиво попытаться использовать определенные функции git update-index, а именно биты accept-unchanged и skip-worktree, но они не работают должным образом для этой цели и не должны использоваться таким образом.
Если вы ищете способ справиться с конфигурацией в файлах конфигурации, а это похоже на то, что вы делаете, то в FAQ описано, как это сделать:
Если ваша цель - изменить файл конфигурации, часто бывает полезно зарегистрировать файл в репозитории, который является шаблоном или набором значений по умолчанию, которые затем можно скопировать вместе и при необходимости изменить. Этот второй измененный файл обычно игнорируется, чтобы предотвратить его случайную фиксацию.
Я не совсем уверен, в чем проблема, но я предпринял следующие шаги
- Скопировал содержимое application.properties в отдельное место
- Восстановлено application.properties для соответствия удаленной версии
- Зафиксировал / отправил все изменения кода, связанные с моим прогрессом
- Слияние этой функциональной ветки с (она еще не завершена, но функционирует в своем текущем состоянии)
- Создана новая ветка функции в удаленном репозитории (для продолжения предыдущей функции WIP)
- Вытащил последний
main
в мой местный - Побежал
git update-index --skip-worktree .\src\main\resources\application.properties
- Проверил недавно созданную ветку функций
- Восстановлены мои локальные изменения в файле application.properties
Теперь изменения не отображаются в панели управления версиями и не мешают мне перемещаться между ветвями локально.