用 git 子模块替换了第三方代码,现在我无法切换分支

发布于 2024-12-07 06:29:40 字数 942 浏览 1 评论 0原文

故事是这样的: 我有 2 个 git 分支 masterdevelop 我目前正在进行开发

我很早就将第三方库的源文件包含在我的存储库的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

何必那么矫情 2024-12-14 06:29:40

不幸的是,我认为这只是使用子模块的缺点之一。这些问题在名为 “Issues with Pro Git 中的子模块”,但简而言之,最简单的解决方法是在切换到 master 分支之前将子模块目录移开:

mv Vendor Vendor.moved
git checkout master

同样,当您更改为开发,你应该这样做:

git checkout develop
mv Vendor.moved Vendor

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
微凉徒眸意 2024-12-14 06:29:40

现在可以变得更容易了。使用命令 git checkout -f master 。

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文