在工作中,我们正在使用 Perforce,我想知道是否可以通过版本控制使用它来做子模块。
例如,我有项目 B 和 C 使用的库 A。
我想让它在我得到 BI 的修订版时也在子文件夹中得到 A:
乙
---=> A(v1)
项目 C 也是如此,但它需要更新版本的库。
C
---=> A(v1.2)
我知道 Git 可以实现这种事情,但在 Perforce 上找不到任何内容。
谢谢,莱昂蒂
在我的项目中,我使用第三方库。我已经在我的项目中使用 git 克隆了这个库,然后在 lib 文件夹中完成了git submodule init操作。git submodule update我将我的主项目推送到 github,但该第三方库的内容未发送,并且 lib 文件夹在我的 github 项目存储库中显示为绿色文件夹。
如果我在另一台机器上克隆我的主项目,我那里没有该库的内容。因此,我应该在机器上再次 git 克隆该库并再次运行 init 和 update 命令,还是有什么方法可以推送我的 github 存储库的第 3 方库?
谢谢
最近我开始了解 git 子模块。它们似乎是自给自足的项目,拥有自己的 git 结构和分支。
当我切换主项目的分支时,这是否也会切换子模块的分支?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 submodule update --remote在我的存储库上运行,然后在检查回归测试后推送到 master。然而,我的测试没有 100% 的覆盖率,有些东西漏掉了。我想在远程更新之前恢复到我的一个子模块中的先前散列。
两个问题:
我有一个子模块,当我这样做时,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)
知道为什么吗?
我想建立一个带有子模块的公共GitHub存储库。GitHub提供了两种连接方式- https:...&git@...协议。对于从事该项目的团队而言,git@...使用起来容易得多,因为我们所有人都使用正确的ssh证书。但是对于不是团队成员的临时用户,则https:...是唯一的选择。git子模块需要完整的URL。
我们如何设置存储库子模块,以便开发人员和临时贡献者都可以平等地使用该系统?谢谢!
我有一个关于 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 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 存储库git submodule update --init --recursive。这些子模块都使用“git@github.com:foo/bar.git” URL。不幸的是,我的工作场所正在阻止 SSH URL 进入他们的防火墙。但是,我可以通过 HTTPS 进行克隆,没有任何问题。
如前所述,子模块 URL 被硬编码在存储库中以使用 SSH。有没有办法告诉 git 使用 HTTPS 克隆这些子模块存储库,而不是 SSH 对 git 存储库进行任何直接修改?