相关疑难解决方法(0)

git子模块更新

我不清楚以下是什么意思(来自git submodule update docs):

...将使子模块HEAD分离,除非--rebase--merge指定...

怎么--rebase/ --merge改变事情?

我的主要用例是有一堆中央存储库,我将通过子模块嵌入到其他存储库中.我希望能够改进这些中央回购,直接在他们的原始位置,或从他们的嵌入回购(通过子模块使用它们的那些).

  • 从这些子模块中,我可以创建分支/修改并使用推/拉,就像我在常规回购中一样,或者有什么需要谨慎的吗?
  • 我如何将子模块引用的提交从say(tagged)1.0提升到1.1(即使原始repo的头部已经是2.0),或者选择使用哪个分支的提交?

git git-submodules

233
推荐指数
4
解决办法
23万
查看次数

Git子模块工作流程

在我的项目中,我需要使用第三方代码,存储在几个Git存储库中.我的项目也存储在(单独的)Git存储库中.在主项目中有几个人和我一起工作,我是维护者.

在早期的项目中,我曾经手动将依赖项复制到Git工作树,添加一个指定我使用的版本的小文件.

现在这是相当不舒服的,因为我需要每天更新一个依赖项,并且经常自己贡献代码,大部分时间都伴随着对主项目的更改.

我决定尝试使用Git子模块进行管理.我尝试的越多,我就越沮丧.甚至看起来手动副本也许更好.

以下是我的一些担忧:

  • 我们不再能够通过单个命令获得一致的存储库状态(git checkout现在需要git submodule update --init).
  • 我们无法正确使用某些Git工具(git archive最值得注意的是).
  • 我们无法从主项目中看到状态更改/差异到子模块.
  • 正如我刚刚发现的那样,git submodule无法使用--git-dir--work-tree选项,并且需要将当前目录的物理更改为"工作树的顶层".

似乎为了简化我们的子模块工作流程(即一个操作==一个命令),我们必须在Git周围编写一个相当厚的包装器.这真是难过;这真是伤心.

请注意,不能选择远离Git或将子项目开发完全合并到主项目中.

也许我用git submodules的是错误的方式?有没有关于工作流程的好教程?

即使您不知道正确的答案,请大家说出来,但请分享我的疑虑.:-)

git workflow git-submodules

42
推荐指数
2
解决办法
6081
查看次数

如何在多个 GIT 存储库中组织大型项目?

我有一个cat依赖于libzzz库的 C++ 项目。它libzzz有自己的 git 存储库,现在我要为该cat项目创建一个存储库。

如何组织 CMake 构建脚本cat

  • 选项1:CMake的脚本cat考虑libzzz建造和安装在系统和cat项目提供FindLibZZZ.cmake脚本搜索libzzz/usr/include/libzzz + /usr/lib/libzzz。但是如何处理非linux平台呢?我个人不喜欢这个选项。

  • 选项 2:在 GIT 存储库中添加某种链接依赖项,这些链接依赖项cat会自动将libzzz源从其源签出到某个cat子目录中。所以cat的 CMakeLists.txt 考虑libzzz放在 somecat的子目录中。怎么做?

c++ git build cmake

3
推荐指数
1
解决办法
930
查看次数

标签 统计

git ×3

git-submodules ×2

build ×1

c++ ×1

cmake ×1

workflow ×1