Хранить игнорируемые файлы при переключении веток в git
Eclipse имеет свои собственные файлы .project
, .classpath
а также .settings
папка. В мерзавце у меня они в .gitignore
файл, потому что я не хочу, чтобы они отслеживались в удаленном хранилище. Моя проблема в том, что когда я переключаю ветвь, а затем снова переключаюсь, эти файлы удаляются, поэтому eclipse не распознает проект, и мне приходится импортировать его снова, чтобы они были сгенерированы.
Есть ли способ сказать git игнорировать эти файлы, но сохранить их в локальном репо или что-то в этом роде, чтобы я не терял их при переключении веток, но изменения в них не отслеживались и не передавались на удаленный компьютер?
Файлы отображаются при запуске git ls-files -o
,
Я проверил GIT: Как сохранить игнорируемые файлы при переключении веток?, но файл все равно появляется при выполнении git status
,
РЕДАКТИРОВАТЬ:
git status
один показывает это:
$ git status
On branch refactorizacion
Your branch is up-to-date with 'origin/refactorizacion'.
nothing to commit, working directory clean
Это не работает:
$ git add -f .project
$ git rm --cached .project
Я тоже пробовал это, но файл появляется после git status
:
$ git add -f .project
$ git update-index --assume-unchanged .project
$ git status
On branch refactorizacion
Your branch is up-to-date with 'origin/refactorizacion'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: .project
1 ответ
Второй, очевидно, не будет работать. Вы добавляете файл в индекс, но без фиксации он не знает, с какой предыдущей версией сравнивать. Так что git status покажет его как новый файл. Вы можете применять update-index только после того, как зафиксировали его один раз.
В первом случае я не уверен, зачем вам добавлять файл перед его удалением.
Как упоминалось в вопросе, на который вы ссылались, вы должны просто удалить файл (если git все еще отслеживает его) и добавить его в .gitignore
, так что мерзавец не отслеживает его больше. Это защитит его от переключения ветвей.
РЕДАКТИРОВАТЬ: убедитесь, что файл был удален с помощью git rm <file>
и что коммит, в котором это было добавлено, присутствует во всех ветвях. Затем добавьте файл в gitignore.