用 git 子模块替换了第三方代码,现在我无法切换分支
故事是这样的: 我有 2 个 git 分支 master
和 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 认为子模块文件是“未跟踪的”,并且不会将它们替换为同一位置中的跟踪的非子模块文件。
我该如何解决这个问题?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不幸的是,我认为这只是使用子模块的缺点之一。这些问题在名为 “Issues with Pro Git 中的子模块”,但简而言之,最简单的解决方法是在切换到
master
分支之前将子模块目录移开:同样,当您更改为
开发
,你应该这样做: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:Similarly, when you change to
develop
, you should do:现在可以变得更容易了。使用命令 git checkout -f master 。
Now it can be made easier. Use command
git checkout -f master
.