Хранить игнорируемые файлы при переключении веток в 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.

Другие вопросы по тегам