在处理子模块时,我遇到了 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
。所以如果我做一个ls
inmodule
我会发现一个嵌套的 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