git submodule没有推进正确的回购

时间:2017-10-16 13:14:26

标签: git git-submodules

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

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

我的主文件夹(使用my / 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

创建一个新的.modules文件,其中包含新模块的信息。

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

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

所以我转到/ dist并运行git add .git commit

接下来,我从我的主文件夹中执行git push,并将/ dist文件夹推送到我的主存储库而不是我的dist存储库。

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

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

1 个答案:

答案 0 :(得分:1)

调用<cffunction name="yourfunction"> <cftry> ... <cfcatch> <cfmail to="myemail@mydomain.edu" from="myemail@mydomain.edu" subject="Error:yourfunction"> <cfdump var="#session#"> <cfdump var="#CGI#"> <cfdump var="#cfcatch#"> </cfcatch> </cftry> <cffunction> 后,应该已存在新文件夹$ git submodule add https://.../_git/myapp-dw-dist dist。此文件夹中发生的所有事情(以及此文件夹中发生的事情)都将被推送到dist存储库。

但是,您可能没有注意到该目录,因为在您运行myapp-dw-dist之前它将为空。这应该会使$ git submodule init回购邮件中的所有文件都显示在内部。现在,文件夹内的更改可以从此文件夹(即存储库)中推送

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

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

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

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