标签: git-submodules

如何从 github 桌面推送我的子模块?

每次当我尝试在 myflix 上推送文件时,子模块 myflixdb01 无法推送,当我尝试从 github 桌面推送它时,我收到错误“提交失败-收到退出代码 1。在此处输入图像描述”

github heroku git-submodules

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

使用子模块为项目创建工作树

我有一个顶级项目,有大约 10 个子模块和一些嵌套子模块。

./top-project/
./top-project/module-a
./top-project/module-b
...
Run Code Online (Sandbox Code Playgroud)

一些子模块有一个经典的 url,如url = git:software/module-a,其他子模块有一个相对于远程顶级项目的 url,如url = ../module-b。顶级项目 url 是url = git:software/top-project.

我想创建顶级项目及其所有子模块的工作树副本。

git worktree add -f ../top-project-v2
Run Code Online (Sandbox Code Playgroud)

但我找不到一种方法使子模块指向其原始路径。我希望top-project-v2/module-agit 指向top-project/module-a,而不是克隆一个全新的模块-a。

如果我这样做cd top-project-v2; git submodule upate --init --recursive,命令会成功,但子模块不会链接到顶级项目子模块。

如果我这样做git checkout --recurse-submodules origin/v2,我会得到一个错误:

git checkout --recurse-submodules origin/v2
fatal: not a git repository: ../../top-project/.git/worktrees/top-project-v2/modules/module-a
fatal: could not reset submodule index
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到吗?

git git-submodules git-worktree

6
推荐指数
1
解决办法
492
查看次数

作为 Gradle 项目集成到 Android 应用程序中时,KMM 项目上缺少公共类

我有一个现有的 Android 应用程序,我喜欢将 KMM 库项目集成为 git 子模块。我们希望在本地构建上集成 git 子模块,并在 CI 构建上使用 Maven 存储库依赖项。

settings.gradle为了实现这一点,我在via中添加了子模块的目录includeBuild,并替换了特定模块的所有依赖项:

includeBuild('my-kmm-library-project') {
    dependencySubstitution {
        substitute module('com.example.any-kmm-artifact:any') using project(':any')
    }
}
Run Code Online (Sandbox Code Playgroud)

添加

implementation 'com.example.any-kmm-artifact:any:1.0.0'
Run Code Online (Sandbox Code Playgroud)

我的应用程序build.gradle文件允许访问 android 源集中子模块中的所有类和包/my-kmm-library-project/any/src/androidMain。但我无法选择从源集中导入“类” commonMain。我已经尝试让androidMain依赖commonMain.

kmm/build.gradle.kts:

includeBuild('my-kmm-library-project') {
    dependencySubstitution {
        substitute module('com.example.any-kmm-artifact:any') using project(':any')
    }
}
Run Code Online (Sandbox Code Playgroud)

这不会带来任何成功。

我还尝试jvm()在 KMM 项目上添加一个目标并让jvmMain依赖androidMain,但这会产生编译错误,导致 Android SDK 类无法解析。

我认为主要问题是,这些类只是编译到可以组装的aar中。但该模块被集成为 gradle 项目实现。

是否有 KMM 选项来编译“公共类”并通过 gradle 模块访问它们?

android gradle git-submodules kotlin-multiplatform kmm

6
推荐指数
0
解决办法
1043
查看次数

如何在Git中跟踪子模块的配置文件?

在Git中,我如何组织工作来跟踪库的本地配置文件,这是一个git子模块?

详情如下:

该库具有被跟踪的普通文件,以及位于其文件夹中但未被跟踪的默认配置文件,以避免重置或覆盖它们(它们在.gitignore中列出).所有文件都在lib的文件夹或子文件夹中.

我开始在Git中跟踪其中一个使用此库的项目.现在有一个两难的境地:

  • 如果我将这个项目中的lib作为一个子模块,我将无法跟踪配置文件(Git将忽略它们,因为它们位于子模块文件夹中).

  • 正如我所理解的那样,将一切作为一个大项目跟踪是一个坏主意.

  • 如果我做跟踪库中的配置文件,我怎么能避免重置它们为默认值?我是否在工作项目中分支并且每次都从主人那里拉出来?那么,如果我编辑库和配置文件呢?这必然会导致合并冲突,不是吗?

我想这不是新的,但我找不到任何建议.我很感激从你的经验中学习.

git version-control git-submodules

5
推荐指数
1
解决办法
844
查看次数

Git历史包括/ interleave子模块提交

我想得到一个git log存储库和所有子模块.该联机帮助页说git log --submodule应该使用但这对我不起作用.

-------编辑-------

举个例子 - 我跑的是什么:

git clone git://git.typo3.org/TYPO3v4/Core.git
cd Core
git submodule init && git submodule update
git log --submodule 
Run Code Online (Sandbox Code Playgroud)

输出git log --submodule不包括任何子模块的提交 - 只是子模块指针已被更改的提交.

少了什么东西?

git git-submodules

5
推荐指数
1
解决办法
4789
查看次数

AWS Elastic Beanstalk + Git子模块

我正在使用亚马逊的Elastic Beanstalk通过Git部署我的应用程序,我的Git中有子模块.当然,当我查看子模块的数据所在的目录时,没有任何内容,因为子模块尚未初始化.

显然Elastic Beanstalk不支持子模块.它是否正确?如果是这样,我怎么能说服Git让我拥有子模块的功能,但是当我推送主回购时仍然上传子模块的所有代码?

git amazon-web-services git-submodules amazon-elastic-beanstalk

5
推荐指数
1
解决办法
1408
查看次数

子目录中的Git子模块?

假设我有两个git回购.RepoA是一个应该在其他项目中共享的通用回购.ReopB是一些需要访问RepoA中的东西的项目.

RepoA

https://.../RepoA
    /Something
    /Source
        /Project1
        /Project2
        ...
        /ProjectN
Run Code Online (Sandbox Code Playgroud)

RepoB

https://.../RepoB
    /SomethingElse
    /Source
        /MainProject
        /RepoA
            /Project1  #Submodule of RepoA at /Source/Project1
Run Code Online (Sandbox Code Playgroud)

使用上面的图解,您可以看到我要做的是配置一个不是RepoA根目录的子模块,而是配置回购中的特定路径.在这种情况下,我想将RepoB/Source/RepoA/Project1映射到RepoA/Source/Project1.

我做了一些研究,似乎并不是直截了当,也可能是不可能做到这一点.我希望我错了!

我们正在从SVN迁移到GIT,在SVN中,我们使用Externals轻松完成此任务.

注意

我也愿意重组RepoA.但我想保持主体结构.例如,如果我能以某种方式在RepoA/Source/...内分支每个项目,但我不希望这变得复杂.

git git-submodules

5
推荐指数
1
解决办法
555
查看次数

将git repo转换为子模块并将.git目录移动到superepo

我在这个回购中有一个超级回购和一些子模块:

MY_SUPER_REPO

  • my_sub_1
  • my_sub_2

现在我正在创建一个新目录,该目录稍后将成为子模块:

  • my_dir_3

当我准备好成为子回购时,我做:

git init
git remote add origin URL
Run Code Online (Sandbox Code Playgroud)

然后我去超级回购和

git submodule add URL
Run Code Online (Sandbox Code Playgroud)

现在.gitmodules相应地更新但.git目录保留在该目录中,my_dir_3当我在该子模块中工作时,钩子似乎从这里取出,而不是从super repo .git/modules/xyz目录中取出.我运行一个脚本来复制.git/modules/xyz我的超级仓库中的钩子,但由于.git添加的子模块中存在本地文件夹,因此不使用超级仓库中的钩子.

是否有任何"魔术"命令来解决这个问题,还是需要.git手动复制?

git version-control git-submodules

5
推荐指数
1
解决办法
203
查看次数

在一个命令中添加具有特定标记而不是分支的子模块

对于rails模板,我想在新的rails应用程序中添加特定标签的子模块.为了保持这个简单,我想避免进入子目录并在那里运行git命令.

git submodule add --branch v1.3.37 git@example.com:foo.git vendor/foo

是我想要使用的,但它不接受--branch参数的标签:

fatal: 'origin/v1.3.37' is not a commit and a branch 'v1.3.37 cannot be created from it Unable to checkout submodule 'vendor/foo'

有没有一种简单的方法在特定标签上添加git子模块?

git git-submodules

5
推荐指数
1
解决办法
1987
查看次数

更改git模块分支

我正在使用git submodule以跟踪子项目。该子模块指向一个特定的分支,但是我现在需要对其进行更改。

我试图手动编辑.gitmodules文件并更改branch =条目,但是稍后我提供的用于更新存储库的每条命令都不会执行任何操作或失败。

我试过了

git submodule sync # Succeeds, but nothing happens
git submodule update # Doesn't do anything
git submodule update --remote # fails with Needed a single revision
Run Code Online (Sandbox Code Playgroud)

该子项目确实已正确签出,并且其中的gitk表明它确实具有我需要切换到的新分支。我可以手动执行此操作并提交新的哈希,但是我不确定是否git submodule会真正理解这种更改。

我也尝试删除所有子模块文件夹(包括.git文件夹内)并重新运行

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

但是我仍然使项目保持与以前相同的状态(我想是因为它仍在更新为提交的哈希)。

git git-submodules git-branch

5
推荐指数
1
解决办法
4114
查看次数