标签: git-submodules

Git Submodule或fork

我在github上有一个私人仓库,这是我的cms的完整源代码.现在我有一些本地客户,我想使用相同的代码库,但具有不同的主题.是否最好将原始项目分成每个项目的回购.或者使用子模块为每个客户创建一个新的仓库?

在每个站点完成后,我会想象主题文件不会发生太大变化,但是当发现错误时需要从主回购中提取更改.

git fork github git-submodules

7
推荐指数
1
解决办法
2152
查看次数

主人的Git子模块

我是git子模块的新手,我注意到它们总是引用特定的提交.

有没有办法让超级项目的子模块始终引用主分支的头部,因此超级项目中的"git submodule update"或"git pull"只是对所有子模块执行"git pull".

谢谢.

git git-submodules

7
推荐指数
2
解决办法
1982
查看次数

如何将已经克隆的项目添加为子模块?

我在一个文件夹中有大量克隆了一段时间的项目。最近,我将整个文件夹移到了我的仓库中,希望将这些克隆的项目转换为子模块,以便将来更好地进行更新和控制。我已经在Google上搜索了很多有关如何执行此操作的方法,但是所有教程仅讨论如何新鲜添加子模块。有人可以帮助我吗?

git git-submodules

7
推荐指数
3
解决办法
2187
查看次数

拆分git存储库以同时处理两个项目

我正在开发一个用于我的项目的框架 ; 然而,框架的开发到目前为止没有上下文:即我需要开始在现实项目中使用它,并具体看到我需要添加,修复或调整的东西(可能是在测试环境中工作的东西)适用于现实生活中的情况,或者某些事情没有意义,或者我想添加功能).

首先,由于Framework显然是一项正在进行中的工作,我需要确保它在Real-life项目中作为其中的不同部分保持更新,因此我可以回到Framework,编辑它,提交,返回到现实生活中的项目更新框架,继续与项目合作.

其次,我真的想要一种在不进行项目切换的情况下实现这一目标的方法.我的意思是我希望能够在Real-life项目中编辑Framework并将这些提交推送到Framework存储库.

现在,我知道这些工具来实现这一最有可能git submodule和git subtree,但他们两人都相当混乱.特别是子模块似乎更倾向于采用只读方法(例如,保持库始终更新):这将满足我的第一个要求,但不满足第二个要求.

有关如何使用Git实现此目的的任何指示以及工作流程的外观如何?

git git-submodules git-subtree

7
推荐指数
1
解决办法
1155
查看次数

递归推送所有子模块

我编写了下面的脚本来推送工作区中的所有更改,包括子模块和超级项目.然而,听起来有点奇怪,做我想做的事情是如此复杂.有没有更好的方法,我错过了?

#!/bin/bash

if [ "$#" -ne 1 ]; then
    echo "Illegal number of parameters"
    exit
fi

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

cd "${SCRIPT_DIR}/../submodule1" 
git status
git add -A
git commit -m "$1"
git push origin master

cd "${SCRIPT_DIR}/../submodule2" 
git status
git add -A
git commit -m "$1"
git push origin master

cd "${SCRIPT_DIR}/../submodule3" 
git status
git add -A
git commit -m "$1"
git push origin master

printf "\n\nUpdating Super Project\n\n" 
cd .. 
git status
git add …
Run Code Online (Sandbox Code Playgroud)

git git-submodules

7
推荐指数
2
解决办法
2939
查看次数

使用子模块克隆存储库:覆盖凭据

我必须自动克隆存储库并获取它的所有子模块.存储库子模块的URL指定在.gitmodules.如果我要使用默认设置,我会这么做

git clone --recursive https://username:password@url.git
Run Code Online (Sandbox Code Playgroud)

问题是凭据不包含在.gitmodules文件中,当我克隆时我会被提示.我必须使用HTTPS而不是SSH.

我尝试使用git config提交凭据:

git clone https://username:password@url.git my_repo
cd my_repo
git submodule init
git config submodule.my_submodule.url "https://username:password@url/my_submodule.git"
git submodule update
Run Code Online (Sandbox Code Playgroud)

但是在上次更新步骤中我被提示输入凭据.我已经检查过子模块url是否正确并且.git/config文件中有正确的凭据.

git git-config git-clone git-submodules

7
推荐指数
2
解决办法
9782
查看次数

尝试初始化子模块时'致命:找不到子模块路径的url'错误

我在当前存储库中用作子模块的存储库droid-media-lib的名称是,但是该子模块所放入的目录的名称是library这样的.gitmodules看起来像这样

[submodule "droid-media-lib"]
        path = library/
        url = https://github.com/talview/droid-media-lib.git
Run Code Online (Sandbox Code Playgroud)

现在当我尝试在另一台计算机上克隆这个项目时,并且做到了

git submodule update --init
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

fatal: No url found for submodule path 'library' in .gitmodules
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的:

  • 我已经尝试将子模块"droid-media-lib"更改为子模块"library",仍然会出现相同的错误.

  • 我已经尝试将库目录名重命名为droid-media-lib并在路径中设置相同的值path = droid-media-lib/",但令人惊讶的是错误消息与其中的"库"保持一致,我不明白它在哪里阅读"库" "字符串来自?

git git-submodules

7
推荐指数
1
解决办法
1万
查看次数

'git submodule add'没有克隆它

如何在不实际克隆其包含的所有文件的情况下向项目中添加本地子模块?我想避免在本地复制我的项目文件.

我知道可以实现这种事情,因为当您克隆包含子模块的项目时,默认情况下不会克隆这些项目.你必须手动完成:

git clone url-of-repo-containing-submodules.git
git submodule init sub-mod
git submodule update --remote
Run Code Online (Sandbox Code Playgroud)

比方说,我有一个带有外源repo lib-sobmodule的git repo 元项目.

我可以破解它以避免文件重复:

cd /path/to/metaproject
git submodule add ../path/to/lib-sobmodule
git commit -m "lib-sobmodule added..."
git push
cd .. && rm -rf meta-project
git clone url-of-meta-project.git
Run Code Online (Sandbox Code Playgroud)

Tadam!lib-sobmodule的文件在我的桌面上不重复.但它不是一个很好的解决方案,因为它导出然后导入/从git遥控器...

是否有一个选项或方法可以阻止克隆本地项目而不必复制它包含的所有文件?

免责声明:这几乎是一个克隆问题,是否有办法在git submodule add没有克隆它的情况下回购?.但由于答案集中在30K git子模块的要求,他们没有给出我在这里描述的更常见用例的满意解决方案.

git git-clone git-submodules

7
推荐指数
1
解决办法
976
查看次数

如何git标记所有子模块?

我想标记我项目的所有子模块.我尝试这样做:

git submodule foreach git tag tagName
Run Code Online (Sandbox Code Playgroud)

......但它似乎只是没有错误地返回,没有做任何事情.

编辑:以下是我尝试的结果:

在此输入图像描述

有人能告诉我如何正确标记所有子模块吗?

注:这是一个非常类似的问题到这个职位,但是对于一个答案建议依靠超级项目的子模块裁判.但是,我实际上喜欢子模块的repo中的标签.

git git-submodules git-tag

7
推荐指数
1
解决办法
3985
查看次数

git clone有效; git子模块失败"权限被拒绝"

在gitlab的私有存储库中,当我运行git clone git@git.privateserver.local:group/project-submodule.git克隆成功完成时.
作为克隆过程的一部分,我被要求提供私钥的密码.

当我运行 submodule update --init "group/project-submodule"
它失败时:

许可被拒绝,请再试一次.许可被拒绝,请再试一次.权限被拒绝(publickey,gssapi-keyex,gssapi-with-mic,密码).致命:无法从远程存储库读取.

在尝试处理子模块时,我没有被要求为我的私钥密码.

(我不得不匿名)

致命:将'git@git.privateserver.local:group/project-submodule.git'克隆到子模块路径'C:/ Users/user/repos/project-module/project-submodule'失败

我检查了.gitmodules文件,它包含正确的数据(我认为可以通过错误消息确认).

引起我注意的主要因素是我没有被问到我的私钥密码.甚至更奇怪,因为当我git clone直接使用时,它会按预期运行.

我也已经通过访问进行了诊断ssh并且它询问了我的密码,就像我执行拉或克隆时发生的那样

使用git for windows"git version 2.16.2.windows.1"

git git-submodules gitlab windows-10 git-for-windows

7
推荐指数
3
解决办法
3085
查看次数