这是故事:
我有2个git分支master
和develop
我目前正在develop
。
我很久以来就在目录Vendor/MGTwitterEngine
中包含了我的仓库中的第三方库的源文件。此代码已合并为master。
现在,在分支develop
上,我删除了库并将其替换为git子模块并提交。
问题是我无法再切换回master
分支。如果我尝试,我会收到以下错误:
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认为子模块文件是“未跟踪”的,并且不会用相同位置的跟踪的非子模块文件替换它们。
如何解决这个问题?
答案 0 :(得分:17)
不幸的是,我认为这只是使用子模块的一个缺点。这些问题在名为"Issues with Submodules" in Pro Git的部分中描述,但简而言之,最简单的解决方法是在切换到master
分支之前将子模块目录移开:
mv Vendor Vendor.moved
git checkout master
同样,当您更改为develop
时,您应该执行以下操作:
git checkout develop
mv Vendor.moved Vendor
答案 1 :(得分:0)
现在,它可以变得更容易。使用命令git checkout -f master
。