为什么Git子模块文件夹在从原点拉出后需要提交?

时间:2011-06-27 15:51:35

标签: git

我有一个由几个git子模块组成的git存储库。如果我想更新工作存储库的子模块,则涉及:

  1. cd
  2. git pull origin master
  3. cd ..
  4. git add
  5. git commit -m“将子模块更新为最新的HEAD”
  6. 当我们拉出子模块更新时,“git status”将显示子模块文件夹的修改状态。因此,执行git add和commit以使修改后的状态消失似乎是有效的。

    为什么我们需要像上面那样提交本地工作存储库的子模块文件夹?

    我们应该在提交后将更改推送到原点吗?

    想象一下,如果我们推动更改,其他谁将需要再次“git add”和“git commit”。这似乎是一个无限循环。

2 个答案:

答案 0 :(得分:2)

如果你想更新子模块,你必须在“git pull origin master”之后调用“git submodule update”(如描述here

然后存储库不再处于脏状态。

答案 1 :(得分:0)

这可能是因为您的本地存储库有一些更改。当您pulled时,它可能与您所做的更改合并。如果它们是相关的,那么推回你的改变是有意义的。

检查是否有干净的存储库,这不应该发生。