git сообщает, что в подмодуле есть изменения, даже если он не - PullRequest
1 голос
/ 27 мая 2020

У меня есть репозиторий git, в котором есть несколько подмодулей. Я получил последнюю фиксацию в основном репозитории git. Но если я наберу git checkout origin/master, я получу ошибку из-за изменений в подмодулях, которые должны быть зафиксированы в первую очередь. В основном репо git status показывает, что есть изменения в подмодулях. Но git status в каждом подмодуле не показывает изменений. Когда возникает проблема git diff some_submodule из основного репо, есть изменения, которые показывают только изменение идентификатора фиксации:

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

Почему это происходит и как проверить origin/master в основном репо?

Config :

  • ОС: Ubuntu
  • git версия: 2.17.1

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Репозиторий, в который вы добавили подмодуль, указывает на конкретный c коммит в истории подмодуля. Фиксация изменений внутри подмодуля не изменяет фиксацию, на которую указывает внешний репозиторий.

Например, это может помочь думать об этом как о версии библиотеки. Когда вы фиксируете изменения внутри подмодуля, вы создаете новую версию, но внешний репозиторий по-прежнему указывает на старую версию как на зависимость. Если вы хотите изменить версию, от которой зависите, вам также необходимо изменить внешний репозиторий.

git status сообщает вам, что ваш локальный подмодуль указывает на commit 2392944, но восходящий поток указывает на commit 21c00cb. Если ваш репозиторий должен использовать commit 2392944 подмодуля, вы должны зафиксировать это изменение во внешнем репозитории (единственное, что будет делать этот коммит, - это указывать на новый коммит, он ничего не изменит внутри подмодуля).

0 голосов
/ 27 мая 2020

Подмодуль изменен, и изменение должно быть зафиксировано в репозитории суперпроекта:

git add some_submodule
git commit -m "Update some_submodule"

Теперь вы можете продолжить с git checkout.

Если вы не хотите фиксировать - отменить изменение:

git submodule update some_submodule

git проверяет сохраненную фиксацию в подмодуле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...