Iva*_*ush 5 git git-submodules
我怎样才能排除Subproject commit ....我在子模块中没有更改任何内容,只从远程存储库中提取更改!我认为在创建子模块时,我在主存储库中提交了一些不需要的东西。有任何想法吗?
1)当我在主存储库中创建子模块git diff时也显示
submodule-path:
Subproject commit 5a8162ff9a602deb96956854346988e1ee45672e
Run Code Online (Sandbox Code Playgroud)
我犯了这个
2)然后有人提交到子模块,所以它有以下日志
2ff89a2bfcaa0 last commit
5a8162ff9a602d first commit
Run Code Online (Sandbox Code Playgroud)
3)我更新了子模块
git submodule update --remote --merge
4)现在git状态显示
modified: submodule-path (new commits)
Run Code Online (Sandbox Code Playgroud)
但我在子模块中没有更改任何内容,只拉取最后的远程更改!我需要最后的改变
git diff显示
diff --git a/submodule-path b/submodule-path
index 5a8162f..2ff89a2 160000
--- a/submodule-path
+++ b/submodule-path
@@ -1 +1 @@
-Subproject commit 5a8162ff9a602deb96956854346988e1ee45672e
+Subproject commit 2ff89a2bfcaa014885a70b0da86e997ecd8d0688
Run Code Online (Sandbox Code Playgroud)
更新:
\n\n这不是一个错误。子模块就是这样工作的。
\n\n主存储库不跟踪子模块的文件。它仅跟踪子模块的 url 和提交 id(子模块在特定点的状态)。
\n\n引用《Pro Git》一书中的《Starting with Submodules》
\n\n\n\n\n尽管 sbmodule
\nDbConnector是工作目录中的子目录,但当您不在该目录中时,Git 会将其视为子模块,并且不会跟踪其内容。相反,Git 将其视为来自该存储库的特定提交。
由于您使用 更新了模块git submodule update,因此必须暂存更改(实际上是更新的提交 ID)。如果您不想更新子模块的跟踪,请不要git submodule update在开始时使用,或者直接放弃更改。
子模块很可能是 HEAD 分离的。进入子模块,重置子模块以修复HEAD分离状态。
\n\n# Do this in the submodule\ngit reset --hard origin/master\nRun Code Online (Sandbox Code Playgroud)\n\n然后将子模块更新到最新的提交。
\n\n# run in the project\'s root, not the submodule\'s\ngit submodule update --remote --merge\nRun Code Online (Sandbox Code Playgroud)\n