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?

Christian Schlensker
  • 21,708
  • 19
  • 73
  • 121

2 Answers2

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
rugk
  • 4,755
  • 2
  • 28
  • 55
Mark Longair
  • 446,582
  • 72
  • 411
  • 327
  • 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.) – Cascabel Oct 01 '11 at 15:52
0

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

Semyon
  • 111
  • 4