开发者

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

开发者 https://www.devze.com 2023-04-09 13:45 出处:网络
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/MGTwi

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

精彩评论

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