gpt4 book ai didi

git - 将多个 git 项目合二为一

转载 作者:太空狗 更新时间:2023-10-29 14:35:20 25 4
gpt4 key购买 nike

我是 git 的新手,我不知道该怎么做。

我正在构建一个模板,它有一个模块包,模块包包含模块。

模块可以单独安装,并且可以有同一模块的多个版本(pro,simple..)。 (我想我可以在我的模块文件夹中做分支)。

模块包可以在没有模板的情况下安装,但需要在其中包含最新版本的模块,并且此包模块也可以有一个版本,例如版本一包括模块 1、2、3 ...

最后,我有了包含文件的模板和必须包含最新版本的模块包。

在简历中,我需要同时控制所有的版本并分开,但我必须将所有版本都放在同一个地方

我想我可以做到这一点

 -- Template (git folder)
-- Module pack (git folder)
-- Module 1 (git folder)
-- Pro version (branch)
-- Simple version (branch)
-- Module 2 (git folder)
-- ....

这是可行的还是我应该考虑其他方法?谢谢你。

最佳答案

我刚好有解决您问题的办法 - gil (git links) tool

它允许描述和管理复杂的 git 存储库依赖关系。

它还为 git recursive submodules dependency problem 提供了解决方案.

假设您有以下项目依赖项: sample git repository dependency graph

然后你可以定义包含存储库关系描述的.gitlinks文件:

# Projects
CppBenchmark CppBenchmark https://github.com/chronoxor/CppBenchmark.git master
CppCommon CppCommon https://github.com/chronoxor/CppCommon.git master
CppLogging CppLogging https://github.com/chronoxor/CppLogging.git master

# Modules
Catch2 modules/Catch2 https://github.com/catchorg/Catch2.git master
cpp-optparse modules/cpp-optparse https://github.com/weisslj/cpp-optparse.git master
fmt modules/fmt https://github.com/fmtlib/fmt.git master
HdrHistogram modules/HdrHistogram https://github.com/HdrHistogram/HdrHistogram_c.git master
zlib modules/zlib https://github.com/madler/zlib.git master

# Scripts
build scripts/build https://github.com/chronoxor/CppBuildScripts.git master
cmake scripts/cmake https://github.com/chronoxor/CppCMakeScripts.git master

每一行按照以下格式描述git链接:

  1. 存储库的唯一名称
  2. 仓库的相对路径(从.gitlinks文件的路径开始)
  3. 将在 git clone 命令中使用的 Git 存储库
  4. 要 checkout 的存储库分支

空行或以 # 开头的行不被解析(视为注释)。

最后,您必须更新您的根示例存储库:

# Clone and link all git links dependencies from .gitlinks file
gil clone
gil link

# The same result with a single command
gil update

因此,您将克隆所有必需的项目并以适当的方式将它们相互链接。

如果您想提交某个仓库中的所有更改以及子链接仓库中的所有更改,您可以使用一个命令来完成:

gil commit -a -m "Some big update"

pull 、推命令以类似的方式工作:

gil pull
gil push

Gil(git links)工具支持以下命令:

usage: gil command arguments
Supported commands:
help - show this help
context - command will show the current git link context of the current directory
clone - clone all repositories that are missed in the current context
link - link all repositories that are missed in the current context
update - clone and link in a single operation
pull - pull all repositories in the current directory
push - push all repositories in the current directory
commit - commit all repositories in the current directory

更多关于 git recursive submodules dependency problem .

关于git - 将多个 git 项目合二为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53969893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com