Задача 2-1: Ошибка добавления в файл .gitignore

[А] Анатолий Шалобасов, 21 июля 2016, 19:51 , 2 подписчика

Здравствуйте. Такая проблема, когда делаю задачу по вашим шагам то все хорошо и все получается и в файл .gitignore, добавляется папка .idea как надо. Если же я в самом начале когда еще только создал репозиторий и создал там файл с расширением .rb сразу же его добавил в репозиторий, то там автоматически получается добавляется и папка .idea. Путем добавления в .gitignore папка не убирается и у неё уже после всего этого название меняется на .idea/vcs.xml. И также уже вместо двух файлов получается 3 -

  • 1-ый файл который мы создали изначально
  • 2-ой .gitignore
  • 3-ий .idea/vcs.xml

Помогите пожалуйста понять что это такое и как это можно исправить. Заранее спасибо

Обсуждение (1)


Вадим Венедиктов Учитель

[В]

Скорее всего, при добавлении файла *.rb вы написали что-то вроде

git add .

И тем самым добавили в git все файлы из текущей папки (в том числе и созданную RubyMine папку .idea, в которой был файл vcs.xml). А потом добавили и файл .gitignore, в котором предлагаете git-у игнорировать добавленный файл.

Так вот, в git нельзя удалить файл из проекта просто добавив его в .gitignore (это сделано намеренно, чтобы избежать случайных затираний файлов разработчиков).

Если вы добавили файл в репозиторий (git add), а потом хотите его из репозитория удалить так, чтобы он при это остался у вас на диске, нужно сперва скопировать его во временное место, а потом уже удалять из репозитория с помощью git rm.

В вашем случае последовательность будет такой:

cp .idea/vcs.xml vsc_.xml `# скопировали файл во временное место (можно в проводнике)`
git rm .idea/vcs.xml `# сказали git-у, что в репозитории нам этот файл больше не нужен, он его удалит`
git commit -m ".idea/vcs removed" `# сделали коммит с изменениями`
mv vsc_.xml .idea/vcs.xml `# вернули файл на место из временного места`