解决问题:通过子模块显示外部代码依赖关系:感谢VonC!
当前问题:拥有a submodule without duplicate contents in two folders
当前问题的临时解决方案:将文件夹名称更改为bin-github,因为作为子模块的文件夹名称为bin。这意味着我需要在我的家中复制内容。
我的HOME文件夹依赖于〜/ bin。 我的文件位于存储库 Masi 的HOME,而位于Github的repo bin 的〜/ bin。我在家的相关文件夹结构:
~
|-- [drwxr-xr-x] bin
| -- fileA
` -- folderA
...
我想知道如何在 Masi 上显示make~ / bin一个Git的子模块。
如何在〜/?
中将〜/ bin作为我的Git的子模块#3回复VonC的评论:
我的.gitmodules
[submodule "bin"]
path = bin
url = git://github.com/masi/bin.git
我觉得我不需要再添加子模块了,因为我已经在我的.gitmodules中了。
我跑
Sam master $ git submodule update
Sam master $ git submodule foreach git pull
Sam master $ ls bin
#2回复VonC的回答:
我将.gitmodules更改为以下内容,以便我家中没有副本。
[submodule "bin"]
path = bin
url = git://github.com/masi/bin.git
这似乎是一种不同的情况,因为我无法像上面那样拉动子模块文件夹。
我现在以新鲜克隆的git-repo
获得以下内容Sam master $ git submodule git init
error: pathspec 'git' did not match any file(s) known to git.
error: pathspec 'init' did not match any file(s) known to git.
Did you forget to 'git add'? # I am not sure what this means
Sam master $ git submodule foreach git pull
Sam master $ git submodule update
我的.gitmodules中有外部存储库。为什么要问我git add
?
回复VonC的回答:
我跑
git submodule add git://github.com/masi/bin.git bin-github-copy
因为我无法添加与现有文件夹bin
同名的新回购。
我的.gitmodules是
[submodule "bin-github-copy"]
path = bin-github-copy
url = git://github.com/masi/bin.git
我跑
git clone git://github.com/masi/Sam.git
我得到一个emty bin -directory。
如何获取bin的内容?
答案 0 :(得分:4)
首先,不要忘记使用Git,您不能“添加”目录,只能访问该目录中至少一个文件的内容。
然后你有两个选择:
submodules,以便Masi在GitHub存储的[
bin目录中引用您的]
文件的特定提交(或最新的分支提交) ,存储在GitHub上)
subtree merge,为了将两个存储库混合在一起,更容易直接从Masi存储库对bin中的文件进行修改。在您的方案中,这可能更简单。
有关这两项策略的更多信息,请参阅this answer。
在子模块路径上,声明子模块只是工作的一半。你仍然需要第一次初始化你的子模块
git submodule git init
然后你需要pull your submodules:
git submodule foreach git pull
然后更新您的子模块
git submodule update
另请参阅此Git submodules, part I和Git submodules, part II的实际示例。
.gitmodules
文件仅存储路径,但提交版本确实与主项目一起存储 我创建了一个project on GitHub来演示会发生什么。具体看看this commit,它会添加子模块,看看发生了什么:
+Subproject commit 60be4b09f51d2560802ebd744893bb6f737ef57c