У меня есть два или более проектов (пусть их называют ProjectFoo и ProjectBar), имеющих некоторый общий код, который я помещал в подмодуль.
Я понимаю, что если я вношу изменения в подмодуль из ProjectFoo, он будет в отдельной голове, что только все клоны ProjectFoo могут видеть:
(master) $ cd ProjectFooBarCommoneSubmodule/
(master) $ git commit -am "Common code fix."
(56f21fb0...) $ git push
Everything up-to-date
Возможно, потому, что ветвь master
не изменилась. Возможно, я мог бы сделать что-то вроде git checkout master && git merge Everything up-to-date
, но это кажется довольно уродливым. Может быть, git reset --hard master
будет делать то же самое, но кажется еще более уродливым.
Как получить общий код, совместно используемый проектом, обновленный из тех проектов, которые его используют? Другими словами, фиксация этого подмодуля должна обновлять все различные репозитории (репозитории, а не только клоны), которые используют этот же подмодуль.
---- EDIT ----
Видимо мой изъятый репозиторий был испорчен и сломан. Это должно было с самого начала работать (в ProjectFoo в этом примере):
(master) $ cd ProjectFooBarCommoneSubmodule/
(master) $ git commit -am "Common code fix."
(master) $ git push
....
fbfdd71..0acce63 master -> master
(master) $ cd ..
(master) $ git add ProjectFooBarCommoneSubmodule
(master) $ git commit -m "Submodule update."
Затем, чтобы получить это изменение в других проектах, например ProjectBar:
(master) $ cd ProjectFooBarCommoneSubmodule/
(master) $ git pull
Будет обновлен последний распространенный код. A git checkout master
может потребоваться, если он находится на отдельной голове.