git子模块脏状态

时间:2017-08-02 14:07:45

标签: git git-submodules

为了便于讨论,假设我在github上有两个repos:foo_top和bar_submodule。正如命名bar_submodule所建议的那样是foo_top的子模块。

我将两个repos克隆到我的本地工作目录中。最近我进入了bar_submodule,创建了一个新分支并进行了更改,然后将其推送到遥控器。

当我进入foo_top并执行

git status

我看到一条消息说我没有提交本地更改:

modified:   deps/bar_submodule (modified content)

所以我做了差异并看到:

diff --git a/deps/bar_submodule b/deps/bar_submodule
--- a/deps/bar_submodule
+++ b/deps/bar_submodule
@@ -1 +1 @@
-Subproject commit e851c59f8262bfbd8c2e1c0d3471494cf6c8475f
+Subproject commit e851c59f8262bfbd8c2e1c0d3471494cf6c8475f-dirty

-dirty部分让我感到困惑。在bar_submodule repo中,在我完成工作的分支上,我看到了提交的有效sha。我期待sha出现在-dirty版本所在的git diff的输出中。

如果我进入deps / bar_submodule并在那里做一个git diff,我会看到我在其他repo中所做的更改需要添加。

有人告诉我只是从foo_top repo的根目录做git add deps/bar_submodule我试过但没有改变 - 没有任何东西可以添加/提交/推送,而git diff的结果没有改变。

我有几个问题:

  1. -dirty的交易是什么?那里为什么不是真正的提交?
  2. 我是否需要在foo_top repo的deps / bar_submodule目录中添加,提交和推送这些更改?
  3. 我是否应该在deps / bar_submodule目录中进行这些更改,而不是首先从bar_submodule目录的克隆中进行这些更改?

0 个答案:

没有答案