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

2

19

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" and won't replace them with the tracked, non-submodule files in the same location.

How can I get around this issue?

Spearhead answered 1/10, 2011 at 7:31 Comment(0)
S
17

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
Spatula answered 1/10, 2011 at 8:19 Comment(1)
Of course, as soon as you get past the transition, this issue does disappear. (And to be fair, it is at least somewhat difficult for Git to safely switch branches. Unfortunate, though.)Kamakura
P
0

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

Pleo answered 25/3, 2019 at 11:2 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.