Как безопасно использовать git на уровне «рабочей области» с ответвлениями и метаданными? - PullRequest
0 голосов
/ 12 января 2012

У меня есть git-репо на уровне рабочей области. то есть несколько тесно связанных проектов Eclipse в одном репо.

Если я добавлю .metadata в .gitignore, то каждый раз, когда я создаю новую ветку и извлекаю заказ, я теряю свой файл .metadata и, следовательно, импортирую все проекты вручную. Это неприятно.

Безопасно ли хранить файл .metadata под контролем версий? Это проект для нескольких разработчиков, версии JDK и, возможно, даже ОС (в будущем) могут отличаться. (Мы все сейчас в Ubuntu.)

Существуют ли другие файлы IDE, которые не следует вводить?

Спасибо

Крис.

1 Ответ

4 голосов
/ 18 января 2012

Проблема в том, что git отслеживал файл и / или каталог до того, как вы добавили его в .gitignore:

  • для файла, он будет отслеживаться независимо от того, что;
  • для каталога, файлы, присутствующие в этом каталоге во время добавления его в .gitignore, также будут отслеживаться.

Это означает, среди прочего, что если у вас естьфайл f, который не отслеживается в ветви b1, но вы извлекаете ветку b2, в которой этот файл отслеживается , git будет безжалостно перезаписывать f.

Как упоминалось вВ предыдущем вопросе решение сделать так, чтобы git полностью игнорировал такие файлы после того, как «вред причинен», состоит в выдаче git rm -r --cached и только затем добавлении их в .gitignore.Но это нужно делать по ветвям, а это значит, что у вас все еще будет проблема в это время.

Учитывая вашу ситуацию, у вас есть два варианта:

  • , если вы можете себе позволитьчтобы перезапустить «с нуля», сделайте это и немедленно вставьте .metadata в .gitignore - и зафиксируйте это сначала, прежде чем даже совершать остальные;
  • , если вы не можете себе этого позволить, у вас нет выбора, кроме какgit filter-branch.

Что касается других файлов, игнорируемых другими IDE, я могу сказать только для IDEA: .idea и *.iml.Без понятия для других ...

...