用git子模块替换第三方代码,现在我不能切换分支

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (32)

故事是这样的:我有两个分支masterdevelop我现在在develop.

我很久以前就把第三方库的源文件包含在目录中Vendor/MGTwitterEngine。此代码已合并为主代码。

现在,在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认为子模块文件是“未跟踪的”,不会用相同位置的跟踪、非子模块文件来替代它们。

我怎样才能回避这个问题?

提问于
用户回答回答于

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

mv Vendor Vendor.moved
git checkout master

类似地,当更改为develop,你应该做:

git checkout develop
mv Vendor.moved Vendor

扫码关注云+社区