Peta dunia

 

EN: Read in English

Dunia 10: Git Mendalam

Submodule lawan subtree

Anda akan belajar: dua cara simpan repo lain di dalam repo anda, dan bila nak pilih setiap satu.

Teks BM belum disemak oleh penutur asli.

Masalahnya

Dua aplikasi kedai guna kod kuih-menu yang sama, daripada repo sendiri. Anda baiki satu pepijat di situ. Macam mana kedua-dua aplikasi dapat pembaikan itu?

Pilih satu jawapan.

Tengok

bash
git submodule add https://github.com/you/kuih-menu.git menu
cat .gitmodules
[submodule "menu"]
path = menu
url = https://github.com/you/kuih-menu.git
git submodule add letak repo kuih-menu dalam folder bernama menu. Kemudian .gitmodules tunjuk path menu dan url.

submodule: Repo lain di dalam repo anda, dipaut pada satu commit yang tepat. ialah repo di dalam repo anda. Repo anda simpan pautan: URL dan satu commit yang tepat.

Cuba

Bina arahan yang clone aplikasi itu bersama submodulenya, sekali gus.

Ketik kepingan ikut turutan yang betul.

…

Teka

Mei clone aplikasi itu tanpa --recurse-submodules. Apa yang ada dalam folder menu?

Pilih satu jawapan.

Tengok

bash
git subtree add --prefix=menu https://github.com/you/kuih-menu.git main --squash
git subtree add salin branch main kuih-menu ke dalam folder menu, dipadatkan jadi satu commit.

subtree: Fail repo lain yang disalin ke dalam satu folder repo anda, sebagai fail biasa. salin fail repo lain ke dalam satu folder. Fail itu jadi fail biasa dalam repo anda. Rakan sepasukan tak perlu buat apa-apa tambahan.

Semak

Submodule atau subtree? Susun setiap fakta.

Seret kad ke dalam kotak. Atau ketik kad, kemudian ketik kotak.

      Anda berjaya!

      Kini anda boleh pilih submodule atau subtree, dan terangkan sebabnya.

      Nak tahu lebih (pilihan)

      git submodule update --remote gerakkan submodule ke commit terbaru branchnya. Kemudian commit perubahan itu. git subtree pull --prefix=menu <url> main --squash bawa masuk kerja menu yang baru. git subtree datang daripada bahagian contrib Git, jadi semak git subtree -h dulu. Kadang-kadang pengurus pakej lebih mudah daripada kedua-duanya.