我使用git来跟踪我正在工作的网站。我在我的机器上工作,并将提交推送到按照以下指南配置的远程服务器:using Git to manage a website。
上周我尝试使用Git子模块来管理一些第三方库,今天我尝试推送到服务器,发现服务器中的所有子模块目录都是空的。
我尝试添加并提交对本地子模块的更改,实际上git status说工作目录是干净的。
我能做什么?
发布于 2011-12-04 10:05:38
子模块的要点是,它们是存储库中的git存储库,而父存储库只知道应该在子模块中签出什么提交-它对内容一无所知。因此,服务器只知道父项目,没有填充子模块,自然什么也看不到。
在某些情况下,您需要初始化服务器上的子模块。看起来您有一个将工作树与存储库分开的设置,因此就像使用git checkout -f一样,您需要适应它:GIT_WORK_TREE=/path/to/whatever git submodule update --init。之后,当您的钩子在推送之后运行git checkout -f时,它还需要运行git submodule update (同样设置了适当的工作树)。
但它比这复杂得多。您没有给出子模块来自何处的任何信息,但是子模块知道它的来源,就像您的存储库一样。当您初始化一个时,它会尝试从那个源克隆,而更新它通常需要从那个源获取。如果像我猜测的那样,第三方库的来源是您没有推送访问权限的公共库,那么您将不得不为子模块设置自己的中央存储库。当你在其中一个子模块中提交时,你会推入它的中央存储库,然后推入父项目,这样当它试图在其他地方更新子模块时,它就能够获取它们。
因此,简单地说,工作流程是这样的:
<代码>F215
发布于 2012-12-20 06:00:58
正如Jefromi所指出的,你的子模块需要一个“遥控器”才能被推送。
我猜你遗漏的一步就是
submodule-dir/$ git remote add origin <where to push submodule>
下面是一步一步的简单示例:Git: Pushing a new submodule
发布于 2017-03-03 23:05:02
我有一个类似的问题:一个克隆的仓库在PC (A)与远程在一个外部网站,我想有我的本地仓库的克隆在另一台PC (B)在同一网络中,我可以推送我的更改(通过ssh)和一些测试(我的一些回归测试需要很长时间),以便我可以继续工作(A)在不同的分支,如果需要的话。(A)中的repo有一个子模块。
我在(B)中创建了纯repo:
mkdir /path/to/bare_git && cd /path/to/bare_git
git --bare init并将其作为新遥控器添加到(A)中的本地存储库中:
git add remote name_of_B_repo ssh://user@host/path/to/bare_git/并将(A)中的本地存储库(可能更改尚未公开)推送到我的ssh存储库:
git push name_of_B_repo branch_to_push在此之后,我将从(B)中克隆我的纯repo:
mkdir /path/to/B_clone && cd /path/to/B_clone
git clone /path/to/bare_git
git submodule update --remote我可以看到我的子模块没有被包括在内。
Solution 1:如果您对测试/更改子模块的内容不感兴趣,但您需要它来进行测试,那么您可以直接在(B)的.git/文件中包含外部网站链接,如下所示:
[submodule]
url = http://submodule_external_website_url然后,只需更新子模块:
git submodule update --remote解决方案2:如果您有兴趣更改(A)中子模块的内容并将其发送到(B),您首先需要将(B)中的ssh存储库添加到本地(A)子模块存储库中,作为新的远程:
cd /path/to/submodule
git add remote name_of_B_repo ssh://user@host/path/to/bare_git/将您的更改推送到它:
cd /path/to/main_A_local_repo
git submodule foreach git push name_of_B_repo branch_to_push将子模块本地路径添加到(B)中克隆存储库的.git/config文件,如下所示:
[submodule]
url = /path/to/bare_git并像以前一样更新您的模块:
git submodule update --remotehttps://stackoverflow.com/questions/8372625
复制相似问题