Struture proyek saya
ProjectA
-FrameworkA (submodule)
--Twig (submodule of FrameworkA)
Bagaimana saya dapat memperbarui submodul secara rekursif? Saya sudah mencoba beberapa perintah git (pada root ProjectA)
git submodule foreach git pull origin master
atau
git submodule foreach --recursive git pull origin master
tetapi tidak dapat menarik file Ranting.
git
git-submodules
complez
sumber
sumber
Jawaban:
Anda mungkin juga ingin menggunakan opsi --init yang akan membuatnya menginisialisasi setiap submodul yang tidak diinisialisasi:
Catatan: di beberapa versi Git yang lebih lama , jika Anda menggunakan
--init
opsi, submodule yang sudah diinisialisasi mungkin tidak diperbarui. Dalam hal ini, Anda juga harus menjalankan perintah tanpa--init
opsi.sumber
--init
digunakan tidak sesuai dengan pengalaman saya di Git 2.2.2. Saya melihat kedua submodul tingkat atas dan bersarang yang telah diinisialisasi mendapatkan komit yang benar diperiksa ketika saya gunakangit submodule update --init --recursive
, dan saya pikir klaim bahwa Anda perlu menjalankan perintah dengan dan tanpa--init
itu salah. Kecuali seseorang dapat menunjukkan bukti bahwa ini adalah perilaku atau menunjukkan bahwa itu berubah di antara versi dan dulunya benar, saya berencana untuk mengeditnya sama sekali.Cara saya menggunakan adalah:
sumber
git submodule foreach git pull --ff-only origin master
git submodule foreach --recursive 'git commit -a | :'
. Itu:
membuatnya loop terlepas dari hasil. Lihat tautan stackoverflow.com/questions/19728933/… .Seperti yang mungkin terjadi bahwa cabang default dari submodules Anda tidak
master
(yang sering terjadi dalam kasus saya), ini adalah bagaimana saya mengotomatiskan upgrade submodules Git lengkap:sumber
Entering 'Core' fatal: ambiguous argument 'origin/HEAD': unknown revision or path not in the working tree.
manaCore
submoduleDalam Git baru-baru ini (saya menggunakan v2.15.1), yang berikut ini akan menggabungkan perubahan submodul hulu ke dalam submodul secara rekursif:
Anda dapat menambahkan
--init
untuk menginisialisasi submodules yang tidak diinisialisasi dan digunakan--rebase
jika Anda ingin rebase alih-alih bergabung.Anda harus melakukan perubahan setelahnya:
sumber
git submodule update --remote my-dir/my-submodule
berfungsi dengan baik