相关疑难解决方法(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子模块开发吗?

我有两个项目(A和B).他们都使用项目Common.我希望通过子模块将Common包含在A和B中,因为那时我可以直接将A&B中的每个提交绑定到Common中依赖的提交.

在过去,我试图让我的团队使用这样的子模块,但我们无法让它顺利运行.我们正在从子模块本身开发公共代码并从子模块提交但是我们遇到了很多问题,我们恢复了将所有项目都放在同一目录下(C:\ dev\A,C:\ dev\Common).

我很确定我们不知道子模块应该如何使用,但是如果你不能直接在子模块中开发Common代码,那么这会不会让它更难开发?有人可以解释一下子模块的正确用法吗?

git git-submodules

10
推荐指数
2
解决办法
1534
查看次数

如何从没有子模块的分支中签出带有子模块的分支

我的本地计算机上有三个分支:

  • 掌握
  • 带有子模块的功能分支
  • 无子模块的功能分支

没有子模块的分支曾经有一个子模块,我按照此 SO post中的说明删除了该子模块。我不想从master和中删除子模块feature-branch-with-submodule

然而,现在我已经完成了feature-branch-without-submodule,我想切换到feature-branch-with-submodule。所以我执行git checkout,但收到错误:

fatal: not a git repository: src/vendor/mysubmodule/../../../../../.git/modules/src/vendor/mysubmodule
Run Code Online (Sandbox Code Playgroud)

如何修复它,以便带有子模块的分支有它,而没有子模块的分支没有,并且我可以使用 git checkout 自由地来回切换?

git git-submodules

8
推荐指数
1
解决办法
3263
查看次数

我如何组织我的Git仓库

我遇到以下问题但没有答案:

我们有一个从SVN回购克隆的回购.存储在该repo中的项目类似于各种项目使用的平台软件.回购的结构如下:

platform
  |- core
  |- additional
Run Code Online (Sandbox Code Playgroud)

由于某些原因,该回购的结构无法更改.这两个,coreadditional含有对的那部分数据platform.

如果项目想要使用该平台并添加一些功能,它会在additional包含源的情况下创建一个新文件夹,并为该功能添加一个标头additional/includes

目前,我们只是从新的项目分支出来master,一切都进入同一个回购.这会导致分支机构膨胀,我的(中央)仓库越来越多,因为在单个项目中提交的所有提交都会转到中央仓库(我的同事已经习惯了SVN,因此它们push几乎在每个项目之后commit- 只是为了当然...).

首先我想到的是子模块:保存platform为超级项目(被调用super)下的子模块,然后转到super/platform/additional/mystuff,在那里创建源并将它们添加到super.但这显然不起作用,因为文件在platform子模块内.

有没有更好的方法来组织我的回购,所以:

  • 该平台的用户能够从中央仓库更新其工作副本
  • 并且该平台的用户能够将错误修复应用于回购platform
  • 使用的项目platform不要搞乱回购platform

编辑1:高度耦合的git子模块涵盖了我所处的相当多的场景:紧密耦合的东西,我唯一一个比git的绝对基础知识更多的人,"大多数开发人员只有粗略的git知识".完美的一对!


编辑2:虽然迈克尔的答案看起来很有希望,但我认为使用起来有点过于复杂.我正在寻找一些不需要太多交互的非常简单的事情.

git layout repository

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

CVS&符号模块等效于git

我正在尝试将我的cvs存储库转换为git并且暂时停留在最后一个问题上.

我目前使用CVS&符号模块在projets之间共享代码.这些允许您基本上将另一个存储库"别名"作为项目中的子目录,因此您可以更新/提交整个项目,并且它包含远程存储库,就像它是一个存储库一样.

我已经看过线程推荐使用子树合并或子模块来执行此操作,参考(svn:externals).这不起作用,因为:

  • 子树合并显然不允许您轻松推回/更新外部回购.

  • 子模块仍然需要您手动推/拉每个子模块.我有大量的子模块,并且每个子模块都会推送我的更改会很乏味,并且可能会导致遗漏,因为更改会忘记提交.

为了清楚起见,我希望有一个git存储库,其中包含其他git存储库作为子目录,并且能够使用一个命令同时提交/推送/拉到所有这些存储库.

git cvs

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

标签 统计

git ×5

git-submodules ×3

cvs ×1

layout ×1

repository ×1