【问题标题】:Convert Git subdirectories into submodules将 Git 子目录转换为子模块
【发布时间】:2020-03-14 03:03:46
【问题描述】:

使用 Windows 进行开发,使用 Debian 作为服务器和存储库,使用 Git 扩展作为 Git 客户端。

我有以下回购:

REPO1:

ROOT_OF_SITE1/

REPO2:

ROOT/
    /SITE1/
    /SITE2/
    /SITE3/

SITE2 和 SITE1 共享相同的代码库,只是 SITE1 是前面的一些提交,但由于路径不同,因此无法从 REPO1 中的 SITE1 到 REPO2 中的 SITE1 中挑选提交。

我想其中一种解决方案是将 SITE2 子目录转换为 Git 子模块,这样我就可以从 SITE1 中挑选提交。

但是,每次我使用 git 子模块时,我都会在 Git 扩展中遇到问题。

很遗憾,Git Extensions Git 客户端目前不支持子树。

【问题讨论】:

  • 展示你如何使用子模块
  • 如何显示?我只记得,我在使用 Git 扩展和子模块时遇到了问题。
  • 你运行了一些命令,对吧?他们是什么?
  • 通常我使用 Git Extensions GUI 来创建子模块。

标签: git git-submodules git-cherry-pick


【解决方案1】:

我会在 SITE1 中使用一个 repo,然后使用 git subtree 拆分其余网站。您可以将您的 repo 划分为不同的分支,从而将多个模块保持在一个非常干净的树中:

git subtree split --prefix=site2 -b site2

查看this post 了解更多信息。然后,您可以重新构建树,留下非常好的 git 历史记录。

【讨论】:

  • 不幸的是 Git Extensions git 客户端目前不支持子树。
  • 你可以使用Git bash或类似的命令行
  • 我确实阅读了子树文章,发现它非常有用:tsh.io/blog/… 我会从命令行尝试子树。
  • 我没有深入尝试,但人们说很棒,他们建议使用 git subtree 而不是 git submodule
猜你喜欢
  • 2015-07-31
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多