排除子项目提交 Git

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)

Sim*_*mba 3

更新:

\n\n

这不是一个错误。子模块就是这样工作的。

\n\n

主存储库不跟踪子模块的文件。它仅跟踪子模块的 url 和提交 id(子模块在特定点的状态)。

\n\n

引用《Pro Git》一书中的《Starting with Submodules》

\n\n
\n

尽管 sbmoduleDbConnector是工作目录中的子目录,但当您不在该目录中时,Git 会将其视为子模块,并且不会跟踪其内容。相反,Git 将其视为来自该存储库的特定提交

\n
\n\n

由于您使用 更新了模块git submodule update,因此必须暂存更改(实际上是更新的提交 ID)。如果您不想更新子模块的跟踪,请不要git submodule update在开始时使用,或者直接放弃更改。

\n\n
\n\n

子模块很可能是 HEAD 分离的。进入子模块,重置子模块以修复HEAD分离状态。

\n\n
# Do this in the submodule\ngit reset --hard origin/master\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后将子模块更新到最新的提交。

\n\n
# run in the project\'s root, not the submodule\'s\ngit submodule update --remote --merge\n
Run Code Online (Sandbox Code Playgroud)\n