通过子模块显示Git中的外部代码依赖性

解决的问题:通过子模块显示外部代码依赖关系:感谢VonC!

当前问题:在两个文件夹中有一个没有重复内容的子模块

解决当前问题的临时解决方案:将文件夹的名称更改为bin-github,因为作为子模块的文件夹名称是bin。 这意味着我需要在家中复制内容。

我的HOME文件夹依赖于〜/ bin。 我有位于Masi仓库的HOME文件,而在Github仓库的〜/ 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目录。

我怎样才能得到bin的内容?


首先,不要忘记,使用Git,你不能“添加”一个目录,只能在该目录中至少有一个文件的内容。

那么你有两个选择:

  • 子模块,以便Masi将存储在GitHub中的[ bin ]目录中的[ files ]的特定提交(或存储在GitHub中的分支的最新提交)

  • 子树合并,以便将两个存储库混合在一起,并且更容易地直接从Masi存储库中对bin内的文件进行修改。 在你的情况下这可能会更简单。

  • 有关这2种策略的更多信息,请参阅此答案。


    在子模块路径上,声明子模块只是工作的一半。 您仍然必须首次初始化您的子模块

    git submodule git init
    

    您需要然后拉你的子模块:

    git submodule foreach git pull
    

    然后更新你的子模块

    git submodule update
    

    另请参见Git子模块,第I部分和Git子模块,第II部分的实际示例。

    .gitmodules文件只存储路径,但提交版本与主项目一起存储。
    我在GitHub上创建了一个项目来演示发生了什么。 仔细看看这个提交,它添加了子模块,看看发生了什么:

    +Subproject commit 60be4b09f51d2560802ebd744893bb6f737ef57c
    
    链接地址: http://www.djcxy.com/p/92389.html

    上一篇: To show external code dependency in Git by a submodule

    下一篇: Stash everything in Git including all submodules?