Я не понимаю из документации, что делает git submodule sync
. Пожалуйста, объясните.
Git команда синхронизации подмодулей - для чего это нужно?
Ответ 1
Git хранит информацию о подмодулях в двух местах. Первый находится в файле с именем .gitmodules
, который проверяется в репозитории git. Изменения этого файла распространяются на другие репозитории.
Другое местоположение находится в .git/config
, и оно, где git действительно выглядит при выполнении большинства команд.
Итак, представьте, что вы некоторое время работали над проектом, и есть подмодуль под названием foo
. Файлы для этого подмодуля извлекаются из некоторого URL-адреса, на самом деле не имеет значения, где. Однако в какой-то момент этот URL-адрес меняется. Возможно, он изменяется так, что подмодуль проверяется с другого сервера или другим путем. Когда вы обновляете свой репозиторий, вы будете копировать файл .gitmodules
, но не ваш файл .git/config
; вы все равно будете проверять старый URL. Когда вы хотите начать проверку с нового URL-адреса, вы должны запустить git submodule sync
, чтобы скопировать новую конфигурацию с .gitmodules
на .git/config
. git не делает это автоматически, потому что вы могли внести свои изменения в свою конфигурацию и не захотели бы перезаписывать их.