Проблема в том, что git отслеживал файл и / или каталог до того, как вы добавили его в .gitignore
:
- для файла, он будет отслеживаться независимо от того, что;
- для каталога, файлы, присутствующие в этом каталоге во время добавления его в .gitignore, также будут отслеживаться.
Это означает, среди прочего, что если у вас естьфайл f
, который не отслеживается в ветви b1
, но вы извлекаете ветку b2
, в которой этот файл отслеживается , git будет безжалостно перезаписывать f
.
Как упоминалось вВ предыдущем вопросе решение сделать так, чтобы git полностью игнорировал такие файлы после того, как «вред причинен», состоит в выдаче git rm -r --cached
и только затем добавлении их в .gitignore.Но это нужно делать по ветвям, а это значит, что у вас все еще будет проблема в это время.
Учитывая вашу ситуацию, у вас есть два варианта:
- , если вы можете себе позволитьчтобы перезапустить «с нуля», сделайте это и немедленно вставьте
.metadata
в .gitignore
- и зафиксируйте это сначала, прежде чем даже совершать остальные; - , если вы не можете себе этого позволить, у вас нет выбора, кроме как
git filter-branch
.
Что касается других файлов, игнорируемых другими IDE, я могу сказать только для IDEA: .idea
и *.iml
.Без понятия для других ...