38

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

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

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

  1. 混帐克隆富;
  2. 光盘富;
  3. git子模块初始化;
  4. git 子模块更新;
  5. cd 路径/到/子模块;
  6. git结帐大师;
  7. 对子模块进行更改
  8. git commit -am“某事”;
  9. git push origin(超级项目);

然后,当我在另一台计算机上克隆超级项目时(直到第 4 步),我希望将这些更改保存在 superproject 中

4

2 回答 2

12

我认为您需要放宽“不提交子模块”约束。有两种选择:

  1. 将您的子模块更改提交到子模块分支。它是您团队的分支,也是您的团队放置子模块更改的地方。当有人克隆超级项目并更新子模块时,他们会获得您团队分支的内容。
  2. 克隆超级项目存储库“旁边”的子模块存储库并初始化子模块以指向您的克隆。然后,当您提交对子模块的更改时,它们将提交给您的克隆。任何克隆超级项目的人都会从您的子模块克隆中获取子模块内容。

否则,我看不到实现您的愿望的方法。

于 2012-06-03T16:56:32.107 回答
0

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

于 2012-06-01T19:22:07.123 回答