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
.
精彩评论