标签: git-submodules

Perforce 和子模块

在工作中,我们正在使用 Perforce,我想知道是否可以通过版本控制使用它来做子模块。

例如,我有项目 B 和 C 使用的库 A。

我想让它在我得到 BI 的修订版时也在子文件夹中得到 A:

---=> A(v1)

项目 C 也是如此,但它需要更新版本的库。

C

---=> A(v1.2)

我知道 Git 可以实现这种事情,但在 Perforce 上找不到任何内容。

谢谢,莱昂蒂

perforce git-submodules

2
推荐指数
1
解决办法
2049
查看次数

github 存储库中的 Git 子模块

在我的项目中,我使用第三方库。我已经在我的项目中使用 git 克隆了这个库,然后在 lib 文件夹中完成了git submodule init操作。git submodule update我将我的主项目推送到 github,但该第三方库的内容未发送,并且 lib 文件夹在我的 github 项目存储库中显示为绿色文件夹。

如果我在另一台机器上克隆我的主项目,我那里没有该库的内容。因此,我应该在机器上再次 git 克隆该库并再次运行 init 和 update 命令,还是有什么方法可以推送我的 github 存储库的第 3 方库?

谢谢

git github git-submodules

2
推荐指数
1
解决办法
3092
查看次数

git submodule 分支是否与主项目的分支一起切换?

最近我开始了解 git 子模块。它们似乎是自给自足的项目,拥有自己的 git 结构和分支。

当我切换主项目的分支时,这是否也会切换子模块的分支?git 如何处理这种情况?

git git-submodules git-branch

2
推荐指数
1
解决办法
1611
查看次数

使用 git 子模块创建多个远程分支

我第一次使用 git 子模块。努力理解如何全面创建分支并将它们添加到所有远程存储库中。

目前我的文件结构类似于以下内容:

-parent_repo
  |
  |_ submodule_1
  |_ submodule_2
  |_ submodule_3
  |_ submodule_4
  |_ submodule_5
  |_ submodule_6
  |_ submodule_7
Run Code Online (Sandbox Code Playgroud)

如果我在父仓库上创建一个分支:

(master) $ git checkout -b feature/my_feature
(feature/my_feature) $ git commit -m "created my_feature"
(feature/my_feature) $ git push -u origin feature/my_feature
Run Code Online (Sandbox Code Playgroud)

我想在包括父模块在内的所有子模块中创建一个分支。之后,所有分支都被远程推送到每个子模块及其受尊重的存储库。

尝试了以下步骤:

$ git submodule foreach -b branch_name
$ git push --recurse-submodules=on-demand
$ git submodule foreach "(git checkout branch_name; git pull)&"
Run Code Online (Sandbox Code Playgroud)

..只是失败了。找不到第一个命令。

..如果我这样做:

$ git config -f .gitmodules submodule.submodule_1.branch branch_name
$ git submodule update --remote
Run Code Online (Sandbox Code Playgroud)

git 返回:

fatal: Needed …
Run Code Online (Sandbox Code Playgroud)

git version-control github git-submodules

2
推荐指数
1
解决办法
2797
查看次数

Git - 查看具有相应哈希值的特定子模块的历史记录

git submodule update --remote在我的存储库上运行,然后在检查回归测试后推送到 master。然而,我的测试没有 100% 的覆盖率,有些东西漏掉了。我想在远程更新之前恢复到我的一个子模块中的先前散列。

两个问题:

  • 如何在远程更新之前获取子模块的先前哈希值?
  • 一旦我得到那个散列,我如何正确地将子模块重置为那个散列?

git git-submodules

2
推荐指数
1
解决办法
1860
查看次数

git submodule update <name of submodule> - 但仍然被修改:<name of submodule>(修改内容)

我有一个子模块,当我这样做时,git status我得到:

modified:   <name of submodule> (modified content)
Run Code Online (Sandbox Code Playgroud)

我跑:

git submodule update <name of submodule> 
Run Code Online (Sandbox Code Playgroud)

但仍然得到:

modified:   <name of submodule> (modified content)
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?

git git-submodules

2
推荐指数
1
解决办法
1302
查看次数

在github子模块中使用ssh vs https

我想建立一个带有子模块的公共GitHub存储库。GitHub提供了两种连接方式- https:...git@...协议。对于从事该项目的团队而言,git@...使用起来容易得多,因为我们所有人都使用正确的ssh证书。但是对于不是团队成员的临时用户,则https:...是唯一的选择。git子模块需要完整的URL。

我们如何设置存储库子模块,以便开发人员和临时贡献者都可以平等地使用该系统?谢谢!

git github git-submodules

2
推荐指数
1
解决办法
665
查看次数

如何将带有子模块的项目与 Gitlab CI docker runner 集成?

我有一个关于 Gitlab CI 的非常不寻常的用例,但我找不到满足我需求的解决方案。

我有一个 Gitlab 存储库,它使用其他存储库共享的子模块。我想实现一个运行器来为这个应用程序构建一个 Docker 容器镜像。为此,我按如下方式配置了我的 ci(使用 docker-in-docker 方法):

image: docker:stable

variables:
  # When using dind service we need to instruct docker, to talk with the
  # daemon started inside of the service. The daemon is available with
  # a network connection instead of the default /var/run/docker.sock socket.
  #
  # The 'docker' hostname is the alias of the service container as described at
  # https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#accessing-the-services
  #
  # Note that if you're using Kubernetes executor, the variable should …
Run Code Online (Sandbox Code Playgroud)

git git-submodules docker gitlab-ci gitlab-ci-runner

2
推荐指数
1
解决办法
2444
查看次数

Git 子模块准备稀疏结帐

我有一个用于稀疏结帐的子模块。没有稀疏结帐我会做

git submodule update --init <path/to/submodule>
Run Code Online (Sandbox Code Playgroud)

但是如何将子模块存储库初始化为空而不获取它(或获取它,但不检查它),所以我可以调用

cd <path/to/submodule>
git config core.sparseCheckout true
cd <../../..>
echo <subdir-to-get> .git/modules/<path/to/submodule>/info/sparse-checkout
Run Code Online (Sandbox Code Playgroud)

很遗憾

git submodule init <path/to/submodule>
Run Code Online (Sandbox Code Playgroud)

不会在.git/modules/<path/to/submodule>和 文件中创建存储库<path/to/submodule>/.git

git git-submodules

2
推荐指数
1
解决办法
1012
查看次数

git - 即使使用 SSH 风格的 git@github,您也可以通过 HTTPS 进行克隆吗

我正在尝试通过 .git 克隆具有子模块的 git 存储库git submodule update --init --recursive。这些子模块都使用“git@github.com:foo/bar.git” URL。不幸的是,我的工作场所正在阻止 SSH URL 进入他们的防火墙。但是,我可以通过 HTTPS 进行克隆,没有任何问题。

如前所述,子模块 URL 被硬编码在存储库中以使用 SSH。有没有办法告诉 git 使用 HTTPS 克隆这些子模块存储库,而不是 SSH 对 git 存储库进行任何直接修改?

git ssh git-submodules

2
推荐指数
1
解决办法
45
查看次数