Saya sebenarnya mencoba belajar cara menggunakan git, termasuk git submodule
sub- perintah . Saya sudah menyiapkan server tempat saya dapat meng-host, mendorong dan menarik repositori git dengan menggunakan SSH. Saya membuat repositori git utama "Travail" pada server ini di mana saya ingin meletakkan semua proyek saya sebagai submodul.
Dalam repositori Travail saya, saya sudah menambahkan proyek saya sebagai submodule di tools/libft
: Saya dapat mengembangkan submodule ini, untuk mendorong dan menariknya.
Tetapi ketika saya mencoba untuk menambahkan submodule lain (bernama fdf, dari fdf.git di server saya), saya mendapatkan masalah berikut:
git submodule add ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git projets/fdf
Direktori git untuk 'projets / fdf' ditemukan secara lokal dengan remote (s): origin ssh: //[email protected]: XXXXX / opt / git / fdf.git Jika Anda ingin menggunakan kembali git lokal ini direktori alih-alih mengkloning lagi dari ssh: //XXX.XXX.XXX.XXX: XXXXX / opt / git / fdf.git gunakan opsi '--force'. Jika direktori git lokal bukan repo yang benar atau Anda tidak yakin apa artinya ini, pilih nama lain dengan opsi '--name'.
Sebenarnya tidak ada subdirektori di projets/
Saya membaca di utas lain bahwa saya harus menggunakan git submodule sync
atau mengedit file .gitmodules di mana URL ke repositori asal submodul saya bisa saja berubah.
Tetapi file .gitmodules saya hanya berisi informasi tentang submodule pertama saya (tools / libft), bukan tentang projets / fdf:
[submodule "tools/libft"]
path = tools/libft
url = ssh://[email protected]:XXXXX/opt/git/libft.git
Sebagai seorang mahasiswa Perancis saya bisa melewatkan sesuatu dalam dokumentasi bahasa Inggris yang saya miliki, tetapi saya mencari dan saya benar-benar tidak mengerti mengapa saya mendapatkan masalah ini.
Saya akan senang jika saya akan mendapatkan solusi tetapi hanya penjelasan akan sangat membantu juga.
sumber
/Travail/.git/modules/projets/
dan menemukan sebuahfdf
direktori. Ini tampaknya tidak berada di pohon kerja tetapi dalam komitmen yang lebih tua. Bisakah itu menghasilkan masalah?Jawaban:
Saya datang ke pos SO ini mencoba menambahkan submodule dengan jalur yang sama dengan submodule yang baru-baru ini saya hapus.
Inilah yang akhirnya berhasil bagi saya ( artikel ini banyak membantu ):
Jika Anda belum menjalankan
git rm --cached path_to_submodule
(tanpa trailing slash) jugarm -rf path_to_submodule
, lakukan itu!Kemudian:
Hapus baris yang relevan dari
.gitmodules
file. misalnya hapus ini:[submodule "path_to_submodule"] path = path_to_submodule url = https://github.com/path_to_submodule
Hapus bagian yang relevan dari .git / config. misalnya hapus ini:
[submodule "path_to_submodule"] url = https://github.com/path_to_submodule
rm -rf .git/modules/path_to_submodule
Kemudian, Anda akhirnya dapat:
git submodule add https://github.com/path_to_submodule
sumber
git rm
danrm -rf
langkah - langkah.).git/modules
dan akhirnya berfungsi.saya mencoba solusi jbmilgrom, secara khusus saya mencoba
git rm --cache
dan itu tidak berhasil bagi saya karena direktori / submodule tidak ada. Apa yang berhasil untuk saya adalah:rm -rf .git/modules/blah
git submodule add git://path.to.new
Saya melakukan ini setelah mencoba
--force
dalamgit submodule
perintah danrm
semua direktori lain, mendorong untuk menguasai dll ... direktori tidak ada dan tidak ada alasan untuk cache. Ternyata di.git/modules
situlah letak kesalahan ini.sumber
Anda mungkin telah menghapus
'projets/fdf'
dari disk, tetapi repositori Git Anda masih memilikinya. Gunakangit rm -rf projets/fdf
untuk menghapusnya dari Git, lalu lakukan perubahan. Setelah itu Anda akan dapat menambahkan folder ini sebagai submodule.sumber
/tmp/repo
, lalu jalankangit submodule add ../otherrepo.git
, maka Anda akan melihat/tmp/repo/.git/modules/otherrepo
folder itu ada. Itulah masalahnya bagi saya. Saya secara manual menghapus folder itu dari .git, dan semuanya berfungsi.Jika Anda sudah menghapus direktori submodule, seperti yang saya lakukan, ikuti petunjuk jbmilgrom lainnya. Kuncinya adalah
rm -rf .git/modules/path_to_submodule
tetap maju dan buat cadangan seluruh direktori repo induk Anda terlebih dahulu .Jika Anda hanya memiliki satu submodule, hapus saja
.gitmodules
sumber
Dua perintah ini bekerja untuk saya.
sumber
.git/modules/
. Di sana ada folder yang menyimpan repositori untuk submodule. Menghapus repositori itu memperbaiki masalah untuk saya, sedangkan jawaban yang diterima tidak.