0

在处理子模块时,我遇到了 git pull 的一个主要问题。我以为我开始理解他们的原理,但显然不是......

我创建了一个简单的 git repoSuper并在其中创建了一个子模块module。我的第一个问题是在提交module(我添加一个文本文件)并推送代码时,我可以在 github 上看到文本文件没有进入子模块module,但实际上进入了超级项目Super(子模块甚至没有在 github 中显示)。因此,当我执行 git pull in 时,Super我最终会在我的 repo 的本地副本中得到我已经推送到子模块中的文本文件......我不确定我做错了什么。这里基本上是代码:

   cd module (a text file "Test" was added to be commited)
   ~/Super/module [master]: git add -A
   ~/Super/module [master]: git commit -m 'comment'
   ~/Super/module [master]: git push
   cd Super
   ~/Super [master] : git pull
   and now the text file "Test" shows up in my Super next to the submodule "module".

所以这已经是个问题了,但我可以忍受。我现在进入我的Super并删除此文本文件并添加对子模块所做的更改module,以重新指向最新的子模块提交。

(after deleting the text file )
~/Super [master] : git add -A
~/Super [master] : git commit -m 'comment 2'
~/Super [master] : git submodule update
~/Super [master] : git pull
~/Super [master] : git push

我现在进入我的子模块并执行 git pull

~/Super/module [master]: git pull

这将创建 super 中所有内容的副本并将其放入 submodule 中module。所以如果我做一个lsinmodule我会发现一个嵌套的 submodule module,这是一个大问题。

~/Super/module/module [master]: 

所以我基本上有两个问题:

  • 当我推送我的子模块时,一个副本会转到超级项目

  • 在更新我的超级项目后拉入我的子模块时,它会创建一个嵌套子模块。

有人可以告诉我我做错了什么吗?如果这对你们来说似乎很明显,我很抱歉,但我已经被这个问题困住了一段时间,这非常令人沮丧。

我已经从 Super 添加了 .gitmodules 文件和 .git/config :

.git 模块:

[submodule "module"]
path = module
url = git@github.com:titocazou/Super.git

.git/配置:

[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@github.com:titocazou/Super.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[submodule "module"]
url = git@github.com:titocazou/Super.git
4

1 回答 1

0

It sounds to me like you may have set the wrong remote path for your submodule, and so your submodule is actually pointing to a remote that is shared with your parent repository. (Basically, you've duplicated your repository inside itself.)

Check the contents of .gitmodules to see what remote path your submodule is actually pointing at for pushes and pulls, and make sure it's not the same as the path your parent repository is pushing to and pulling from.

于 2013-05-11T01:57:28.617 回答