我可以使用Git子模块将一个分支的副本保留在同一存储库中另一个分支的目录中吗?

时间:2018-07-03 23:14:19

标签: git recursion git-submodules

我正在编写一个Web开发教程。在其中,一个学生从一个名为“ chapter-1-start”的git分支开始,当她完成该教程章节中的步骤时,她的代码应与“ chapter-1-complete”中的代码基本相同。我想在“ lib / reference_app”之类的目录中的“ chapter-1-start”分支中包含“ chapter-1-complete”,以便她可以比较或在必要时剪切并粘贴从complete到开始的文件。这是我的目标:

  1. 将所有代码保存在一个存储库中。
  2. “ chapter-1-start”中的引用分支“ chapter-1-complete”应该是最新的-不必更新。

我认为这对于子模块是可行的,但是没有经验。我担心通过输入递归引用会丢失整个git历史。

1 个答案:

答案 0 :(得分:2)

我过去做过的一个技巧是为特定分支为子模块添加相同的回购协议:请参见“ Copying Doxygen Documentation from gh-pages branch into a subfolder of Master branch”。

在您的情况下,学生可以在自己的存储库中执行以下操作:

git branch chapter-1-complete origin/chapter-1-complete
git checkout chapter-1-start
git submodule add -b chapter-1-complete -- /remote/url/of/your/own/repo
git commit -m "ADd chapter-1-complete branch as submodule"
git push

然后在git submodule update --remote中完成的简单chapter-1-start就足以更新chapter-1-complete子文件夹(子模块的根目录)的内容。请参阅“ git submodule follows branch”。