更改git子模块,并保留更改

时间:2012-06-01 19:17:56

标签: git git-submodules

我已将我的一个库的git子模块克隆到我正在处理的项目中。问题是,在克隆之后,我需要更改克隆子模块中的一些行,但我不想将这些更改推送到原始存储库

我希望这些更改留在超级项目中。这可能吗?我怎样才能做到这一点?

编辑:正如@GoZoner所说,基本上是:

  1. git clone foo;
  2. cd foo;
  3. git submodule init;
  4. git submodule update;
  5. cd path / to / submodule;
  6. git checkout master;
  7. 更改子模块
  8. git commit -am“Something”;
  9. git push origin(超级项目);
  10. 然后当我在另一台计算机上克隆超级项目时(直到第4步),我希望保存这些更改,在超级项目中

2 个答案:

答案 0 :(得分:9)

我认为你需要放松'不提交子模块'约束。有两种选择:

  1. 将子模块更改提交到子模块分支。这是您团队的分支,也是您的团队更改子模块的地方。当有人克隆超级项目并更新子模块时,他们会获得团队分支的内容。
  2. 在您的超级项目存储库旁边克隆子模块存储库并初始化子模块以指向您的克隆。然后,当您提交对子模块的更改时,它们将被提交到您的克隆。任何克隆超级项目的人都会从子模块克隆中获取子模块内容。
  3. 否则,我看不到实现愿望的方法。

答案 1 :(得分:-1)

您可以签出单独的分支以进行更改。不要推动那个分支。您想要推送的更改,在其中一个原始分支上进行更改。将该分支合并到您不推高的特殊分支中。不要在你的特殊分支上做任何其他工作,因为你必须以另一种方式合并。你可以这样做,但它变得复杂。