Chr*_*ker 19 git git-merge git-submodules
这是故事:我有两个git分支master
,develop
我现在正在develop
.
我很久以前在目录中的repo中包含了第三方库的源文件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
Run Code Online (Sandbox Code Playgroud)
git认为子模块文件是"未跟踪"的,并且不会用相同位置的跟踪的非子模块文件替换它们.
我该如何解决这个问题?
Mar*_*air 17
不幸的是,我认为这只是使用子模块的一个缺点.Pro Git中的"子模块问题"一节中描述了这些问题,但简而言之,最简单的解决方法是在切换到master
分支之前将子模块目录移开:
mv Vendor Vendor.moved
git checkout master
Run Code Online (Sandbox Code Playgroud)
同样,当你改变时develop
,你应该这样做:
git checkout develop
mv Vendor.moved Vendor
Run Code Online (Sandbox Code Playgroud)