me-*_*e-- 4 git git-submodules
为了调试第三方库中的问题,我将他们的源代码复制到我自己的git仓库中.我立刻重现了这个问题所以想要记录一个起点.当我尝试提交时,我复制的所有文件都没有显示在我的工作树中,因此我无法进行分级.
我尝试在复制的源中显式暂存其中一个文件:
git add README
fatal: Path 'Src/Foo/README' is in submodule 'Src/Foo/FooBar'
Run Code Online (Sandbox Code Playgroud)
所以似乎git认为它是一个子模块,尽管我从来没有告诉过它.我尝试删除第三方源的根目录中的.git目录,但这没有帮助.然后我尝试按照这些说明操作,但它告诉我没有子模块:
git submodule deinit .
No submodule mapping found in .gitmodules for path 'Src/Foo/FooBar'
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
最简单的解决方案是克隆第三方repo,重现你的修复,提交和推送(如果你有权访问他们的repo,你是否已经在GitHub上分叉)
如果没有,做(在您的回购的新鲜克隆)a:
git ls-tree HEAD Src/Foo/FooBar
Run Code Online (Sandbox Code Playgroud)
查看是否有特殊条目160000,表明FooBar在某个时间点被注册为子模块),即使.gitmodules不再列出FooBar.
A git rm --cached Src/Foo/FooBar(使用git 1.8.5+)将处理该子模块条目.
当然,如果第三方源不是git repo的一部分,那么将它们添加到您自己的repo中的不同文件夹中也会起作用.
但是这些第三方库文件的历史将与主要仓库的历史混合在一起.
| 归档时间: |
|
| 查看次数: |
929 次 |
| 最近记录: |