Состояние измененных файлов подмодуля git - PullRequest
42 голосов
/ 15 мая 2011

Я добавил подмодуль в свое главное дерево папок 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")

Я пробовал обновить подмодуль git, но ничего не происходит.

Ответы [ 3 ]

68 голосов
/ 15 мая 2011

То, как сообщается о состоянии подмодулей 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

... чем это означает, что 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

... это означает, что версия, в которой находится ваш подмодуль (т.е. то, что вы видите из 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"

С другой стороны, если вам нужен последний вариант, вы можете изменить версию, с которой работает подмодуль:

git submodule update example.com/soundmanager
5 голосов
/ 21 октября 2013

Я попал в это состояние, ошибочно добавив подмодуль, специально добавив каталог, а не просто добавляя содержимое нового каталога.

Мне нужно было просто удалить подмодуль следующим образом:

git rm --cached path/to/my/new_directory

А затем сначала добавьте содержимое, как я и предполагал:

git add path/to/my/new_directory/*
0 голосов
/ 22 мая 2018

Я использовал следующую команду git и решил эту проблему:

git submodule update --init  --recursive
...