Langkah manual dengan perintah git sederhana
Rencananya adalah untuk membagi direktori individu menjadi repositori sendiri, lalu menggabungkannya bersama. Langkah-langkah manual berikut tidak menggunakan skrip geek-to-use tetapi perintah yang mudah dipahami dan dapat membantu menggabungkan N sub-folder tambahan ke dalam satu repositori.
Membagi
Anggaplah repo asli Anda adalah: original_repo
1 - Aplikasi terpisah:
git clone original_repo apps-repo
cd apps-repo
git filter-branch --prune-empty --subdirectory-filter apps master
2 - Pisahkan libs
git clone original_repo libs-repo
cd libs-repo
git filter-branch --prune-empty --subdirectory-filter libs master
Lanjutkan jika Anda memiliki lebih dari 2 folder. Sekarang Anda akan memiliki dua repositori git baru dan sementara.
Taklukkan dengan Menggabungkan aplikasi dan libs
3 - Siapkan repo baru:
mkdir my-desired-repo
cd my-desired-repo
git init
Dan Anda harus membuat setidaknya satu komitmen. Jika tiga baris berikut harus dilewati, repo pertama Anda akan langsung muncul di bawah root repo Anda:
touch a_file_and_make_a_commit # see user's feedback
git add a_file_and_make_a_commit
git commit -am "at least one commit is needed for it to work"
Dengan file temp yang dikomit, merge
perintah di bagian selanjutnya akan berhenti seperti yang diharapkan.
Mengambil dari umpan balik pengguna, daripada menambahkan file acak seperti a_file_and_make_a_commit
, Anda dapat memilih untuk menambahkan .gitignore
, atau README.md
dll.
4 - Gabungkan repo aplikasi terlebih dahulu:
git remote add apps-repo ../apps-repo
git fetch apps-repo
git merge -s ours --no-commit apps-repo/master # see below note.
git read-tree --prefix=apps -u apps-repo/master
git commit -m "import apps"
Sekarang Anda akan melihat direktori aplikasi di dalam repositori baru Anda. git log
harus menunjukkan semua pesan komit historis yang relevan.
Catatan: seperti yang Chris catat di bawah dalam komentar, untuk versi terbaru (> = 2.9) dari git, Anda perlu menentukan --allow-unrelated-histories
dengangit merge
5 - Gabungkan repo libs berikutnya dengan cara yang sama:
git remote add libs-repo ../libs-repo
git fetch libs-repo
git merge -s ours --no-commit libs-repo/master # see above note.
git read-tree --prefix=libs -u libs-repo/master
git commit -m "import libs"
Lanjutkan jika Anda memiliki lebih dari 2 repo untuk digabungkan.
Referensi: Gabungkan subdirektori dari repositori lain dengan git