субмодуль в git не добавлен и показывает [измененный контент] - PullRequest
1 голос
/ 12 марта 2019

Репо представляет собой проект Android и использует подмодуль под названием volley. Я пытаюсь добавить его в Git после изменения. Я последовал за этим и выполнил:

git submodule foreach --recursive git add -A .

Но подмодуль не добавляется. На терминале я получаю это после запуска вышеупомянутого cmd:

Entering 'app/modules/volley'

Но тогда новые файлы не добавляются. Что я тут не так делаю?

Ответы [ 2 ]

2 голосов
/ 12 марта 2019

A (modified content) примечание для подмодуля не различает не добавленные и добавленные изменения в отслеживаемом контенте, что сбивает с толку, пока вы не поймете, почему это различие здесь не имеет значения.

Когда вы git add подмодуль, вы добавляете его текущий идентификатор фиксации. Это то, что должно быть восстановлено по пути субмодуля позже, в других проверках в других репозиториях: этот коммит, коммит с этим идентификатором. Все, что записывается в вашем собственном коммите, это идентификатор коммита подмодуля, который нужно найти и проверить там. Если хочешь.

Итак, git status сообщает вам, что у вас есть новый контент субмодуля, который еще не был зафиксирован. Git позволяет вам фиксировать добавленный, он же кэшированный, или индексируемый, поэтапный контент, безотносительно к любым последующим изменениям в рабочем дереве, что сбивает с толку и даже злит людей, пока они не достигнут своей цели, что вы можете сделать с этим, но когда вы добавляете aka stage или aka cache и т. д. подмодуль, добавляемый контент - это просто идентификатор коммита подмодуля: там есть необходимый маленький шаг заикания, если вы создаете новую историю в рабочем дереве этого подмодуля, вы должны добавить и зафиксировать ваш новый контент, чтобы вы могли разместить новый идентификатор коммита подмодуля в главном индексе.

То есть, вы git add редактировали новый отслеживаемый контент внутри подмодуля или нет, для репозиториев, использующих этот подмодуль, несущественно, важно то, что вы их зафиксировали, а git status сообщает вам, что у вас есть незафиксированные изменения к отслеживаемому контенту.

Вам необходимо подключиться к этому подмодулю и (добавить, но вы уже это сделали, и) зафиксировать его новое содержимое. Затем вы можете записать новый идентификатор фиксации субмодуля (строка «Извините, ваш контент находится в другом замке») в индексе основного репо перед фиксацией. Есть причина, по которой git submodule update --init --recursive не используется по умолчанию.

1 голос
/ 12 марта 2019

Просто зайдите вручную в этот подмодуль и проверьте его git status: если файлы не изменены, git add -A ничего не добавит.

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

...