Могу ли я разогнать подмодуль Git?

Как только я запустил

git update submodule

Могу ли я сделать что-нибудь, чтобы он вернулся к тому, как это было до начала и обновления?

Ответы

Ответ 1

Вы говорите, что хотите вернуться к init и обновить, что будет в том случае, когда подмодуль все еще присутствует в .gitmodules, но является пустой каталог, который не зарегистрирован в .git/config.

Предположим, что ваш подмодуль называется foo/bar, тогда вы можете сделать следующее:

# Move the submodule out of your repository, just in case you have changes
# in there that you realise afterwards that you'd like to preserve:
mv foo/bar/ ~/backups/old-foo-bar/

# Recreate the submodule directory, but empty this time:
mkdir foo/bar/

# Remove all the config variables associated with that submodule:
git config --remove-section submodule.foo/bar
# Note that the submodule name is *without* the trailing slash

Ответ 2

Попробуйте (с git1.8.3, 22 апреля 2013 г.) a:

git submodule deinit

(см. "Как удалить подмодуль Git?)

Это удаляет весь раздел submodule.<name> из .git/config либо для данного подмодуля (s)

Возможно, вам придется удалить рабочее дерево для этого подмодуля.

Ответ 3

Если изменения были совершены, вы должны проверить reflog:

git reflog

Как только вы обнаружите, что набор изменений вы потеряли, вы можете снова объединить его.

Если ваши изменения не были совершены, они не могут быть восстановлены.