我有以下 .gitmodules文件:
[submodule "web/blog"]
path = web/blog
url = git://amygdala.servebeer.com:lucky_blog.git
[submodule "web/old"]
path = web/old
url = git://amygdala.servebeer.com:old_lucky.git
Run Code Online (Sandbox Code Playgroud)
当我克隆repo并运行git submodule init && git submodule update(或git submodule init --update)时,我收到以下错误:
Cloning into web/blog...
fatal: Unable to look up (port 9418) (Name or service not known)
Clone of 'git://amygdala.servebeer.com:lucky_blog.git' into submodule path 'web/blog' failed
Run Code Online (Sandbox Code Playgroud)
我观察到引起一些担忧的三件事:
.gitmodules条目(web/old)克隆得很好,没有任何问题.git clone git://amygdala.servebeer.com:lucky_blog.git 工作得很好.这个回购有什么问题?这是git的错误还是我在设置回购时搞砸了什么?
编辑这里是我的git配置供参考:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = …Run Code Online (Sandbox Code Playgroud) 可能重复:
Git浅子模块
启动Git 1.6.5+ git clone有一个--recursive选项,也可以递归地克隆子模块.
我们项目中的子模块非常大(历史很多),有时需要很长时间来克隆,可以通过--depth 1选项保存.
有没有办法以--depth 1递归方式浅层克隆()这些子模块?
我对这个Git事情很陌生,需要一些帮助.
我最近在GitHub上创建了一个新的repo并将其克隆到我的桌面上.我们称之为myProject.我的GitHub帐户中也有一个fork,我将其作为子模块包含在myProject中.让我们把这种myForkOfOtherProject,这是一个叉otherProject.
那么,这是目前的情况:

当一个repo被克隆时,它有一个默认的远程名为origin,指向你在GitHub上的fork,而不是它分叉的原始repo.要跟踪原始仓库,您需要添加另一个名为upstream的远程.
所以,我的问题是,如何将上游设置为子模块?或者我不明白什么?
先感谢您.
我已经安装了composer并通过'composer install'添加了一些包.它将它们安装在"my_project\vendor"路径下,但是一些软件包是使用git克隆的,所以当我提交"my_project"时,这些克隆的软件包被忽略了.
问题是,当其他开发人员克隆"my_project"时,他们会丢失被忽略的包.有没有办法自动将包添加到"my_project",以便其他开发人员从我这里获取它们?
我认为这应该使用子模块完成,但我不知道如何自动将作曲家的每个新包作为子模块添加到我的项目中.
删除子模块后,我收到此错误.有问题的路径不在我的.gitignore文件中,我的.git/info/exclude文件中也没有任何相关内容.我没有.gitignore_global文件.为什么git试图忽略这条路径,我该如何解决这个问题呢?
The following path is ignored by one of your .gitignore files:
MyTest/MyTest/lib/submodules/ScreenRecorder
Use -f if you really want to add it.
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试执行的命令:
git submodule add https://github.com/kishikawakatsumi/ScreenRecorder.git MyTest/MyTest/lib/submodules/ScreenRecorder
Run Code Online (Sandbox Code Playgroud)
这是从我的git repos根目录执行的.
我在一个大型项目中使用git superproject模式,该项目由没有存储库帐户的Teamcity构建代理部署,但是存储库设置为允许匿名克隆.出于这个原因,我已经使用他们的http://url而不是他们的git url 设置了子模块.这个问题是存储库拒绝http推送:
Total 0 (delta 0), reused 0 (delta 0)
error: RPC failed; result=22, HTTP code = 401
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
所以每次我在切换分支时更新子模块,我都要做一个git remote add-url --push添加git://网址.
有没有办法在超级项目中设置子模块,以便他们已经使用http://url进行提取和git://推送网址?
我有一个相当大的项目,有很多依赖项.项目存储在git存储库中,依赖项存储在作为子模块链接的专用git存储库中.依赖项可以具有进一步的依赖性(同样,使用git子模块).
这很好用.但是,如果两个依赖项同时需要第三个依赖项,则会遇到更新问题.
依赖关系图如下所示:
[Main Repo]
|
|-- [ModuleA]
| |
| \-- [ModuleC]
|
\-- [ModuleB]
|
\-- [ModuleC]
Run Code Online (Sandbox Code Playgroud)
现在我更新ModuleA和ModuleB中的子模块指针.这样两个模块都是自包含的.但是,这是很多工作.
在较大的项目中,这个问题通常如何解决?我正在寻找解决此类问题的最佳实践.
谢谢!
我们的团队不再使用子模块很长一段时间了,我们想通过删除所有缓存的子模块来释放一些存储库空间.
我们只需要删除以下内容吗?
rm -rf .git/modules
Run Code Online (Sandbox Code Playgroud)
或者有更推荐的方法吗?此外,如果可能,我们希望将删除推送到服务器.
注意:使用git 2.5.4和当前状态将所有内容合并到一个分支中.
注意:我们不记得旧提交中使用的子模块的个别名称.
我有一个多模块Maven项目:
root
SubmoduleA
src
pom.xml
SubmoduleB
src
pom.xml
pom.xml
.gitlab-ci.yml
Run Code Online (Sandbox Code Playgroud)
有人在检查只影响SubmoduleA的代码时,是否有任何方法可以仅在SubmoduleA上触发CI管道?例如,某人在SubmoduleA中进行了更改.一旦他们提交并推送,我想在SubmoduleA上自动运行build-> test-> deploy,因为SubmoduleB没有变化.
有没有办法为回购中的特定子模块或子项目指定触发器和作业?
git-submodules ×10
git ×8
github ×2
composer-php ×1
dependencies ×1
git-subtree ×1
gitlab ×1
gitlab-ci ×1
maven ×1
multi-module ×1
php ×1
runner ×1