git报告子模块有更改,即使它没有

git报告子模块有更改,即使它没有,git,Git,我有git存储库,其中有几个子模块。我在主要git回购中获取了最新提交。但是,如果我键入git checkout origin/master,那么我就得到了错误,因为子模块中的更改应该首先提交。在主repogit status中显示子模块中有变化。但是每个子模块中的git status没有显示任何更改。当从主repo发出git diff some_子模块时,会发生一些更改,这些更改仅显示提交ID的更改: diff --git a/some_submoduleb/some_submodule in

我有git存储库,其中有几个子模块。我在主要git回购中获取了最新提交。但是,如果我键入
git checkout origin/master
,那么我就得到了错误,因为子模块中的更改应该首先提交。在主repo
git status
中显示子模块中有变化。但是每个子模块中的
git status
没有显示任何更改。当从主repo发出git diff some_子模块时,会发生一些更改,这些更改仅显示提交ID的更改:

diff --git a/some_submoduleb/some_submodule
index 21c00cb..2392944 160000
--- a/some_submodule
+++ b/some_submodule
@@ -1 +1 @@
-Subproject commit 21c00cb4729feacd95a9ea01d100a2e0f2ddb604
+Subproject commit 2392944290df7d41ad3abfe50f71e5c3886de798
为什么会发生这种情况?如何在主回购中签出
原始/主

配置:

  • 操作系统:Ubuntu
  • git版本:2.17.1

子模块已更改,并且必须在超级项目存储库中提交更改:

git add some_submodule
git commit -m "Update some_submodule"
现在,您可以继续执行
git checkout

如果不想提交-还原更改:

git submodule update some_submodule

git
签出子模块中保存的提交。

子模块已更改,并且必须在超级项目存储库中提交更改:

git add some_submodule
git commit -m "Update some_submodule"
现在,您可以继续执行
git checkout

如果不想提交-还原更改:

git submodule update some_submodule

git
检查子模块中保存的提交。

添加子模块的存储库指向子模块历史记录中的特定提交。在子模块内提交更改不会更改外部存储库指向的提交

例如,将其视为库的一个版本可能会有所帮助。当您在子模块内提交更改时,您正在创建一个新版本,但外部存储库仍然将旧版本作为依赖项指向。如果要更改所依赖的版本,还需要更改外部存储库


git status
告诉您本地子模块指向
commit 2392944
,但上游指向
commit 21c00cb
。如果您的存储库应该使用子模块的
commit 2392944
,那么您必须在外部存储库中提交此更改(此提交只会指向新提交,不会更改子模块内部的任何内容).

添加子模块的存储库指向子模块历史记录中的特定提交。在子模块内提交更改不会更改外部存储库指向的提交

例如,将其视为库的一个版本可能会有所帮助。当您在子模块内提交更改时,您正在创建一个新版本,但外部存储库仍然将旧版本作为依赖项指向。如果要更改所依赖的版本,还需要更改外部存储库


git status
告诉您本地子模块指向
commit 2392944
,但上游指向
commit 21c00cb
。如果您的存储库应该使用子模块的
commit 2392944
,那么您必须在外部存储库中提交此更改(此提交只会指向新提交,不会更改子模块内部的任何内容).

ID对应于哪些提交?2392944290DF7D41AD3ABFE50F7E5C3886DE798是最新提交21c00cb4729feacd95a9ea01d100a2e0f2ddb604是较旧的提交。为什么重要?ID对应于哪些提交?2392944290DF7D41AD3ABFE50F7E5C3886DE798是最新提交21c00cb4729feacd95a9ea01d100a2e0f2ddb604是较旧的提交。为什么重要?如果子模块dsubdirectory中的
git status
未报告任何更改,colud子模块如何更改?子模块中有一个更改-其
头现在指向不同的提交。超级项目会记住所有子模块中的所有当前提交,因此它认为这是一个应该恢复的更改(
git submodule update some_submodule
)或已提交。如果子模块dsubdirectory中的
git status
未报告任何更改,colud子模块如何更改?子模块中有更改-其
头现在指向不同的提交。超级项目会记住所有子模块中的所有当前提交,因此它认为这是一个应还原(
git submodule update some_submodule
)或提交的更改。我不想提交任何新内容。我只想签出
origin/master
并获得子模块的适当“版本”,因为它们在
origin/master
提交中指出。我不想提交任何新的内容。我只想签出
origin/master
并获得子模块的适当“版本”,因为它们在
origin/master
commit中指出。