Заменил сторонний код на подмодули git, теперь не могу переключать ветки - PullRequest
19 голосов
/ 01 октября 2011

Вот история: у меня есть 2 ветки git master и develop Я в настоящее время на develop.

У меня давно есть исходные файлы сторонней библиотеки, включенные вмой репо в каталоге Vendor/MGTwitterEngine.Этот код уже был объединен с master.

Теперь в ветви develop я удалил библиотеку, заменил ее подмодулем git и зафиксировал.

Проблема в том, что я не могудольше переключитесь обратно на ветку master.Если я попытаюсь, я получу следующую ошибку:

The following untracked working tree files would be overwritten by checkout:
    Vendor/MGTwitterEngine/MGTwitterHTTPURLConnection.h
    Vendor/MGTwitterEngine/MGTwitterHTTPURLConnection.m
    Vendor/MGTwitterEngine/MGTwitterLibXMLParser.h
    Vendor/MGTwitterEngine/MGTwitterLibXMLParser.m
    Vendor/MGTwitterEngine/MGTwitterMessagesLibXMLParser.h
    Vendor/MGTwitterEngine/MGTwitterMessagesLibXMLParser.m
    Vendor/MGTwitterEngine/MGTwitterMessagesParser.h
    Vendor/MGTwitterEngine/MGTwitterMessagesParser.m
    ...
   Aborting

git считает, что файлы субмодуля «не отслежены» и не заменит их отслеженными файлами, не являющимися субмодулями, в том же месте.

Как обойти эту проблему?

Ответы [ 2 ]

17 голосов
/ 01 октября 2011

К сожалению, я думаю, что это только один из недостатков использования субмодулей.Эти проблемы описаны в разделе под названием «Проблемы с подмодулями» в Pro Git , но вкратце, самый простой обходной путь - это переместить каталог подмодуля в сторону перед переключением на ветку master:

mv Vendor Vendor.moved
git checkout master

Аналогично, когда вы переходите на develop, вы должны сделать:

git checkout develop
mv Vendor.moved Vendor
0 голосов
/ 25 марта 2019

Теперь это можно сделать проще. Используйте команду git checkout -f master.

...