Saya memiliki masalah serupa, tetapi telah melukis diri saya di sudut dengan alat GUI.
Saya memiliki subproyek dengan beberapa file di dalamnya yang sejauh ini saya salin daripada memeriksa git repo mereka sendiri. Saya membuat repo di subfolder, dapat melakukan, mendorong, dll dengan baik. Tetapi dalam repo induk, subfolder tidak diperlakukan sebagai submodule, dan file-nya masih dilacak oleh repo induk - tidak baik.
Untuk keluar dari kekacauan ini, saya harus memberi tahu Git untuk berhenti melacak subfolder (tanpa menghapus file):
proj> git rm -r --cached ./ui/jslib
Lalu saya harus mengatakan bahwa ada submodule di sana (yang tidak dapat Anda lakukan jika ada sesuatu yang saat ini dilacak oleh git):
proj> git submodule add ./ui/jslib
Memperbarui
Cara ideal untuk menangani ini melibatkan beberapa langkah lagi. Idealnya, repo yang ada dipindahkan ke direktori sendiri, bebas dari modul git induk, dikomit dan didorong, dan kemudian ditambahkan sebagai submodule seperti:
proj> git submodule add git@bitbucket.org:user/jslib.git ui/jslib
Itu akan mengkloning git repo sebagai submodule - yang melibatkan langkah-langkah kloning standar, tetapi juga beberapa langkah konfigurasi lainnya yang tidak jelas yang git ambil atas nama Anda agar submodule itu berfungsi. Perbedaan yang paling penting adalah bahwa ia menempatkan file .git sederhana di sana, alih-alih direktori .git, yang berisi referensi path ke tempat dir git yang sebenarnya tinggal - umumnya di root proyek induk .git / modules / jslib.
Jika Anda tidak melakukan hal-hal seperti ini mereka akan bekerja dengan baik untuk Anda, tetapi segera setelah Anda berkomitmen dan mendorong orang tua, dan pengembang lain pergi untuk menarik orang tua itu, Anda hanya membuat hidup mereka jauh lebih sulit. Akan sangat sulit bagi mereka untuk meniru struktur yang Anda miliki di mesin Anda selama Anda memiliki dir .git penuh dalam subfolder dari dir yang berisi dir .git sendiri.
Jadi, pindah, dorong, git add submodule, adalah opsi terbersih.