Sudah Clone dari Github Tapi Ada File yang Tertinggal, Kok Bisa?


Bagi kalian yang sering memanfaatkan salah satu web layanan pengembangan software bersama seperti Github, pastinya sering mengalami kegagalan saat melakukan cloning dari Github. Bukan kegagalan sih, lebih tepatnya ketika proses cloning selesai, tetapi masih ada file atau direktori yang tertinggal. Kok bisa?

Kata kuncinya adalah "Submodule". Jadi singkatnya, projek yang kalian kloning dari si A, beberapa file projeknya tertaut pada projek milik si B. Sedangkan yang kalian kloning hanya projek milik si A saja. Bingung?

Gini, kita misalkan si A adalah seseorang dengan nama akun "dogmaphobic" dengan file-file projek seperti di gambar di bawah ini.


Jika kita kloning seperti biasa menggunakan perintah "git clone https://zzzz.git", maka yang terjadi adalah direktori "mavlink" yang ada di projek tadi kosong. Alias, isinya tidak ikut tersalin. Padahal jika kita buka dan lihat langsung dari web Github, direktorik tersebut ada isinya. Lebih jelasnya seperti screenshot terminal saya di bawah ini.


Bila kalian teliti lagi, projek yang kalian kloning terdapat file ".gitmodules". Nah, kalau file tersebut dibuka, kalian akan mendapati isi file tersebut berupa script (dan link) yang merujuk pada sebuah projek milih orang lain. Seperti yang saya tulis di awal, yaitu si B. Kurang lebih isi file tersebut seperti gambar di bawah ini.

Untuk mengatasi hal tersebut, kalian bisa mengetikkan perintah ini ketika akan melakukan kloning dari Github melalui terminal Linux kalian.

Untuk Git dengan versi 2.13 dan yang terbaru, kalian bisa melakukan perintah ini:

git clone --recurse-submodules https://github.com/zzzzz.git

Sedangkan untuk versi 2.13 ke bawah, kalian coba dengan perintah berikut:

git clone --recursive https://github.com/zzzz.git

Tapi bagaimana jika sudah terlanjur melakukan kloning? Apakah mesti dihapus dulu, dan dilakukan kloning ulang? Jawabannya boleh seperti itu. Tapi daripada kerja dua kali, kalian bisa lakukan update langsung dengan catatan, file ".gitmodules" tadi ada dan benar. Caranya begini:

git submodule update --init --recursive

Akan secara otomatis file-file projek yang masih punya tautan dengan projek milik orang lain akan dikloning dan ditempatkan sesuai dengan direktorinya masing-masing.

Gampang kan? ^_^


Referensi:
https://stackoverflow.com/questions/3796927/how-to-git-clone-including-submodules
https://stackoverflow.com/questions/25632719/git-clone-without-including-top-parent-folder
https://magp.ie/2017/03/16/git-clone-without-project-folder/
https://superuser.com/questions/643094/can-i-git-clone-into-a-directory-without-cloning-the-project-name-as-a-directory

Posting Komentar

0 Komentar