Субмодуль настройки git'



Если я изменю подмодуль, могу ли я вернуть фиксацию в начало подмодуля или для этого потребуется клон?
Если клонировать, можно ли хранить клон в другом репозитории?

666   2  

2 ответов:

подмодуль-это не что иное, как клон РЕПО git в другом РЕПО с некоторыми дополнительными метаданными (запись дерева gitlink,.gitmodules file)

$ cd your_submodule
$ git checkout master
<hack,edit>
$ git commit -a -m "commit in submodule"
$ git push
$ cd ..
$ git add your_submodule
$ git commit -m "Updated submodule"

обратите внимание, что начиная с git1.7. 11 ([объявить] Git 1.7.11.rc1 и версии, июнь 2012 года) отмечает:

"git push --recurse-submodules" научился по желанию заглядывать в истории подмодулей, привязанных к суперпроекту, и выталкивать их.

вероятно сделано после этот патч и --on-demand:

recurse-submodules=<check|on-demand>::

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

  • если check используется, это будет проверено, что все коммиты подмодуля, которые изменились в версиях, которые будут выдвинуты, доступны на удаленном устройстве.
    В противном случае толчок будет прерван и выйдет с ненулевым статусом.
  • если on-demand используется, все подмодули, которые изменились в ревизиях, которые будут нажаты, будут нажаты.
    Если по требованию не удалось протолкнуть все необходимое изменения он также будет прерван и выйти с ненулевым статусом.

таким образом, вы можете нажать все за один раз с (из родительского РЕПО) a:

git push --recurse-submodules=on-demand

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


С git 2.7 (январь 2016) простого нажатия git будет достаточно, чтобы нажать родительское РЕПО... и все его подмодули.

посмотреть commit d34141c,commit f5c7cd9 (03 дек 2015),commit f5c7cd9 (03 дек 2015), и commit b33a15b (17 ноября 2015) by Майк Кроу (mikecrowe).
(слитый Junio C Hamano--gitster-- на совершить 5d35d72, 21 дек 2015)

push добавить recurseSubmodules настройки

в --recurse-submodules параметр командной строки существует для некоторых время, но у него нет эквивалента файла конфигурации.

следуя стилю соответствующего параметра для git fetch давайте придумывайте push.recurseSubmodules чтобы задать значение по умолчанию для этого параметра.
Это также требует добавления --recurse-submodules=no to разрешить переопределение конфигурации в командной строке, когда требуемый.

самый простой способ реализовать это, как представляется, сделать push используйте код submodule-config аналогично fetch.

The git config doc теперь включает:

push.recurseSubmodules:

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

  • , если значениеcheck', затем Git проверит, что все коммиты подмодуля, которые изменились в версиях, которые будут нажаты, доступны по крайней мере на одном удаленном устройстве из подмодуля. Если какие-либо фиксации отсутствуют, толчок будет прерван и выйдет с ненулевым статусом.
  • , если значениеon-demand ' тогда все подмодули, которые изменились в изменениях, которые будут нажаты, будут нажаты. Если on-demand не смог нажать все необходимые изменения, он также будет прерван и выйдет с ненулевым статусом. -
  • , если значениеno ' тогда поведение по умолчанию игнорирования подмодулей при нажатии сохраняется.

вы можете переопределить эту конфигурацию во время нажатия, указав '--recurse-submodules=check|on-demand|no'.

так:

git config push.recurseSubmodules on-demand
git push

Git 2.12 (Q1 2017)

git push --dry-run --recurse-submodules=on-demand на самом деле будет работать.

посмотреть commit 0301c82,commit 1aa7365 (17 ноя 2016) by Брэндон Уильямс (mbrandonw).
(слитый Junio C Hamano--gitster-- на commit 12cf113, 16 дек 2016)

push run with --dry-run на самом деле нет (Git 2.11 Dec. 2016 и ниже/до) выполните сухой запуск, когда push настроен на нажатие подмодулей по требованию.
Вместо этого все подмодули, которые должны быть выдвинуты, фактически выдвинуты к их удаленным устройствам, в то время как любые обновления для суперпроекта выполняются как сухой запуск.
Это ошибка, а не предполагаемое поведение сухого запуска.

научить push уважать --dry-run опция при настройке рекурсивного нажатия подмодулей "по требованию".
Это делается путем передачи --dry-run флаг для дочернего процесса, который выполняет толчок для подмодулей при выполнении сухого запуска.


и все еще в Git 2.12, теперь у вас есть"--recurse-submodules=only" опции чтобы выталкивать подмодули, не выталкивая суперпроект верхнего уровня.

посмотреть commit 225e8bf,commit 6c656c3, commit 14c01bd (19 дек 2016) by Брэндон Уильямс (mbrandonw).
(слитый Junio C Hamano--gitster-- на совершить 792e22e, 31 янв 2017)

Comments

    Ничего не найдено.