2017-10-16 69 views
0

我有一个回购,我正在开发一些库,我生成/ dist文件夹,然后推入另一个回购,以便其他应用程序可以只导入此。git子模块不推入正确的回购

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

我的主文件夹(我的/ src目录,的package.json等)有这样的远程:

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从我的主文件夹和/ DIST文件夹推到我的主要仓库,而不是我的DIST库。

我在这里错过了什么?我认为这应该进入myapp-dw-dist,因为我将它添加为不同的子模块。

编辑︰以防万一,我不得不说我每次重建我的/ dist文件夹我完全删除文件夹(rimraf)并再次创建它...是否有可能我删除了一些敏感的git信息?我的印象是,所有的git需要的是.modules文件。

回答

1

调用$ git submodule add https://.../_git/myapp-dw-dist dist之后,应该已经有一个新的文件夹dist。在这个文件夹中发生的所有事情(只有在这个文件夹中发生的事情)才会被推送到myapp-dw-dist存储库。

但是,您可能没有注意到该目录,因为它将一直为空,直到您运行$ git submodule init。这应该会使您的myapp-dw-dist回购库中的所有文件都出现在里面。文件夹内部的改变现在可以在该文件夹(即储存库)内被提交

提交子模块中的更改后,请不要忘记在子存储库中提交子模块的已更改状态。请参阅here

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

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