开发者

Replaced third party code with git submodules, now I can't switch branches

Here's the story: I have 2 git branches master and develop I'm currently on develop.

I've long since had the source files of a third party library included in my repo in the directory Vendor/MGTwitterEngine. This code was already merged into master.

Now, on branch develop, I've removed the library and replaced it with a git submodule and committed.

The problem is I can no longer switch back to the master branch. If I try, I get the following error:

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 thinks the submodule files are "untracked" a开发者_高级运维nd won't replace them with the tracked, non-submodule files in the same location.

How can I get around this issue?


Unfortunately, I think this is just one of the drawbacks of using submodules. These problems are described in a section called "Issues with Submodules" in Pro Git, but in short, the simplest workaround is to move the submodule directory out of the way before switching to the master branch:

mv Vendor Vendor.moved
git checkout master

Similarly, when you change to develop, you should do:

git checkout develop
mv Vendor.moved Vendor


Now it can be made easier. Use command git checkout -f master.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜