Git показывает изменения субмодуля в репозитории upstream
Примечание. Этот вопрос относится к темам администрирования, но я решил, что переполнение стека больше подходит для git
вопрос
Я использую git для управления довольно большим стеком файлов конфигурации. Каждая соответствующая партия файлов разделяется на подмодуль, который создается на тестовом сервере, а затем перетаскивается в "основную" ветвь, которая используется на рабочем сервере.
С моего рабочего сервера я вижу:
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: common/manifests/file.pp
# modified: updates (new commits)
Вот в чем дело: common
это субмодуль так же, как updates
, Я ожидаю увидеть здесь формулировку "новые коммиты" с просьбой передать изменения субмодуля в "основной" репо.
Если я упаду в common
В каталоге, я вижу другие изменения, но самое главное, НЕ тот, который упоминает вышестоящий репозиторий.
$ cd common
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: manifests/log.pp
#
no changes added to commit (use "git add" and/or "git commit -a")
Кажется, что Git знает, что common
папка является отдельным репозиторием, только когда я на самом деле сижу в ее рабочем каталоге, но не когда я нахожусь в верхнем каталоге.
git --version
возвращается с 1.7.11.3
Что здесь происходит, и как мне заставить git снова начать отслеживать нижестоящий каталог как подмодуль?
1 ответ
Оказывается, common
Конфигурация субмодуля была случайно изменена, и все ссылки на этот репо как субмодуль были удалены из .git/modules
, .gitmodules
, а также .git/config
,
Я сделал git rm -r common/
с последующим git submodule add
и теперь все хорошо.
Мораль истории: возиться в .git
папка может вызвать странные вещи.