git submodule修改了文件状态

Poe*_*Poe 42 git git-submodules

我在我的主git文件夹树中添加了一个子模块,并且没有更改任何内容,但它显示已修改.我该怎么办?

$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#    modified:   example.com/soundmanager
#
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)

我尝试过git子模块更新,但它没有做任何事情.

Mar*_*air 72

报告git子模块状态的方式比最新版本的git发生了很大变化,所以你应该真正包含输出,git --version以便我们能够准确地帮助你.

但是,无论如何,输出git diff example.com/soundmanager应该告诉你更多.如果您看到具有相同提交名称的输出,但-dirty添加到新版本,例如:

diff --git a/example.com/soundmanager b/example.com/soundmanager
--- a/example.com/soundmanager
+++ b/example.com/soundmanager
@@ -1 +1 @@
-Subproject commit c5c6bbaf616d64fbd873df7b7feecebb81b5aee7
+Subproject commit c5c6bbaf616d64fbd873df7b7feecebb81b5aee7-dirty
Run Code Online (Sandbox Code Playgroud)

...这意味着git status在子模块中不干净 - 尝试cd example.com/soundmanager然后git status看看发生了什么.

另一方面,如果您看到不同的提交版本,例如:

diff --git a/example.com/soundmanager b/example.com/soundmanager
index c4478af..c79d9c8 160000
--- a/example.com/soundmanager
+++ b/example.com/soundmanager
@@ -1 +1 @@
-Subproject commit c4478af032e604bed605e82d04a248d75fa513f7
+Subproject commit c79d9c83c2864665ca3fd0b11e20a53716d0cbb0
Run Code Online (Sandbox Code Playgroud)

...这意味着您的子模块所在的版本(即您所看到cd example.com/soundmanager && git show HEAD的版本)与主项目树中提交的版本(即您所看到的版本)不同git rev-parse HEAD:example.com/soundmanager.如果前者是正确的,您应该在主项目中添加并提交新版本的子模块,例如:

git add example.com/soundmanager
git commit -m "Update the soundmanager submodule"
Run Code Online (Sandbox Code Playgroud)

另一方面,如果后者是您想要的,您可以更改子模块所使用的版本:

git submodule update example.com/soundmanager
Run Code Online (Sandbox Code Playgroud)


awe*_*awe 5

我通过专门添加目录而不是仅添加新目录的内容而错误地添加子模块而进入此状态.

我只需要像这样删除子模块:

git rm --cached path/to/my/new_directory
Run Code Online (Sandbox Code Playgroud)

然后在第一时间添加我想要的内容:

git add path/to/my/new_directory/*
Run Code Online (Sandbox Code Playgroud)


小智 5

我使用以下 git 命令来解决这个问题:

git submodule update --init  --recursive
Run Code Online (Sandbox Code Playgroud)