2014-06-11 148 views
1

我在这里有一个非常奇怪的,不好的情况。免责声明,我是git新手,而且我有点搞砸了。git submodule冲突推

所以我有很多submodules在我的fork中,基于monodevelop。

第一个:我甚至无法使用 git submodule update --init --recursive更新我的子模块。
我尝试了一堆类似的命令,与rebase,foreach等,所以我终于得到最新使用git submodule foreach git pull origin master。之后,我得到了我的所有文件。我然后承诺并推动我的变化

现在:我只注意到,我所有的子模块都有冲突。 < < < < < < < < HEAD等我不知道这些来自哪里,我不知道如何解决这些问题。

git状态表示一切都是最新的。子模块更新说,即使有力,一切都是最新的。 git fetch表示一切都是最新的。

回答

1

对于任何弄虚他们的子模块的人。我也得到了我的朋友的帮助。

我所做的是合并子模块并将它们提交到我的主模块中。一般的经验法则是我不应该这样做,而是使用更改单独向子模块回购请求。

无论如何,我刚进入每个子模块目录git log # hit q to cancel out of the entire output.。当我为了正确的提交而提交commit sha时,我想返回。
然后我做了git reset --hard c5652 # Partial commit id, if no other branch or file have that name.这是解决我的问题。

我在整个工作过程中并不清澈,而且我一定会阅读更多内容。

+0

将子模块内容放入主模块确实不太好:它会删除我在我的答案中提到的gitlink条目,并将其替换为常规文件夹。 '重置 - 硬'是一个很好的举措。 +1 – VonC

+0

@VonC是的,那是我搞砸了。我不知道它会搞乱连接。这是出于无知,我应该更加注意承诺什么。我很高兴现在解决了。 :) – harsimranb

1

git submodule update --init --recursive会将您的子模块更新为特定的SHA1,并记录在主回购的索引中(作为gitlink entry)。

如果您需要一个子模块来跟踪分支,您可以转换该子模块声明以使其跟随(在初始化步骤之后)该分支a git submodule update --recursive --remote
请参阅“Git submodules: Specify a branch/tag