代码之家  ›  专栏  ›  技术社区  ›  David

git子模块未推入正确的回购

  •  0
  • David  · 技术社区  · 7 年前

    我有一个repo,我正在开发一些库,我生成/dist文件夹,然后我想把它推到另一个repo中,这样其他应用程序只能导入这个。

    所以我读到,将这个/dist添加为子模块将是一种方法。

    MINGW64 ~/Documents/myapp-dw (master)
    $ git remote -v
    origin  https://.../_git/myapp-dw (fetch)
    origin  https://.../_git/myapp-dw (push)
    

    现在我添加了一个子模块,其中包含

    $ git submodule add https://.../_git/myapp-dw-dist dist
    

    和一个新的。模块文件是用新模块的信息创建的。

    接下来,我用一个npm任务生成dist文件夹,并用其中的其余文件创建该文件夹。

    我愿意 git status 我看到文件夹/dist已被修改。

    所以我去/dist跑步 git add . git commit

    接下来我会 git push

    我错过了什么?我以为这应该进入我的应用程序dw dist,因为我添加了它作为一个不同的子模块。

    编辑:以防万一,我不得不说,每次我重建我的/dist文件夹时,我都会完全删除该文件夹(rimraf)并再次创建它。。。有没有可能我正在删除一些敏感的git信息?我的印象是git所需要的只是。模块文件。

    1 回复  |  直到 7 年前
        1
  •  1
  •   kowsky    7 年前

    通话后 $ git submodule add https://.../_git/myapp-dw-dist dist ,应该已经存在一个新文件夹 dist . 此文件夹中发生的一切(以及仅此文件夹中发生的事情)都将推送到 myapp-dw-dist 存储库。

    但是,您可能没有注意到该目录,因为在运行之前它将是空的 $ git submodule init . 这将使您的 myapp数据仓库分布 回购出现在内部。现在可以通过推送提交文件夹内的更改 .

    在提交子模块中的更改后,不要忘记在父存储库中提交子模块的更改状态。

    有关子模块的更多文档,请参阅 here

    编辑:啊,有问题了!正如您在编辑中所说,当您删除 距离 dist/.git 文件夹这是一个告诉git要将其推入哪个存储库的文件夹。只要没有 .git 在您的子模块中,git会认为它只是父存储库中的另一个文件夹,并将其他所有内容推送到其中。

    您可以尝试只删除其中的文件 距离 而不是整个文件夹,或者在每次更改后重新添加子模块(听起来确实更容易出错)。