使用子模块在git仓库中切换分支

时间:2016-10-26 13:33:03

标签: git git-submodules

在包含一个或多个子模块的仓库中切换分支的正确方法是什么?

考虑所有情况,可能每种情况都有不同的方法:

  • 子模块仅存在于源/目标分支
  • 其中一个子模块包含您可能要保留的未推送/未提交/未跟踪的文件
  • 源/目标分支中的子模块指向不同的sha1,具有不同的文件集

目前,由于我们所有的子模块都以x_*开头,我们必须这样做才能安全地切换分支:

rm -rf x_*; rm -rf .git/modules/x_*

除了非常(至少可以说),这对子模块中的更改是不安全的(未跟踪的文件,未推送的提交和修改的文件将被静默删除)

示例:从包含子模块B1S1S2的分支S3切换到包含子模块的分支B2 {{ 1}}和S2

首先我们克隆repo并签出S4及其所有子模块。我们如何切换到B1以便子文件B2S1不会从文件系统中删除(仅显示为未跟踪的文件),S3现在处于不同的状态版本和S2也出现在文件系统中?

0 个答案:

没有答案