2012-01-12 81 views
2

我正在阅读有关GIT子模块的Phil博客文章,这对我非常有用。 http://philsturgeon.co.uk/blog/2011/09/managing-codeigniter-packages-with-git-submodulesGit子模块 - 更新和承诺更改

我想知道更新子模块的过程中的一个步骤:当您对子模块进行更改并检查状态时,它说您不在工作树中(“您没有头“?)。那么你应该“git checkout master” - ??? - 但是不会撤销你所做的所有更改并将你的子模块返回到先前的状态?


与子模块我的理解

那么就是你做到以下几点:

1)克隆子模块

2)初始化和更新子模块**你只这样做一次?

3)进行更改

4)结帐“大师”的子模块**这将不是杰克,你呢?

5)提交子模块

6)推子模块**你可以提交主要项目瓦特/推子模块?

7.)提交主项目

只是想清除我脑海中的事情。


编辑:我想克隆一个子模块到一个项目与拉动整个超级项目之间是有区别的。看起来像“git submodule init & & update”只有在拉动整个项目时才需要。

回答

0

我的出发流程

  1. 克隆的主要项目
  2. 初始化和更新子模块
  3. 有趣的子模块里面去做git的结帐-b feature_branch
  4. 可做变
  5. 提交他们
  6. 推他们
  7. 进入到主项目
  8. 混帐添加& & git的承诺& &混帐推

当心!您可以将主项目推送到一些公开可用的存储库,而不是步骤6,但您真的不应该。因为它变得对外人无法使用。

我的基本工作流程(假设我们已经实施了一些功能)

  1. 转到主存储库,并签出想要的分支|标签|提交
  2. 更新子模块(此签出的所有子模块的期望版本
  3. 往里走有趣的子模块,并做git的结帐-b feature_branch
  4. 可做变
  5. 提交米
  6. 把他们
  7. 进入到主项目
  8. 混帐添加& & git的承诺& &混帐推