Git Clone Branch - Cara Mengklonkan Cabang Khusus

Tidak seperti sistem kawalan versi terpusat seperti SVN dan CVS, Git diedarkan. Setiap pembangun mempunyai sejarah dan kawalan penuh kod mereka secara tempatan atau jarak jauh. Mereka juga dapat mengakses atau memanipulasi beberapa bahagian kod yang difikirkan sesuai dari lokasi yang berbeza.

Sejak Linus Torvalds (pencipta kernel sistem operasi Linux yang terkenal) membuat Git pada tahun 2005 untuk pengembangan kernel Linux, ia telah menjadi sistem kawalan versi moden yang paling banyak digunakan di dunia.

Dalam artikel ini, saya akan memperkenalkan anda kepada aliran kerja klon Git dan cabang Git dan saya akan menunjukkan kepada anda bagaimana anda dapat mengklon cabang tertentu berdasarkan keperluan anda. Mari kita mulakan! ?

Prasyarat

  • Pengetahuan asas terminal
  • Keupayaan untuk menaip perintah di terminal
  • Git dipasang (saya masih akan menunjukkan caranya)
  • Akaun GitHub
  • Senyuman di wajah anda (Pakai senyuman itu?)

Pengenalan Pantas kepada Git dan GitHub

Menurut Wikipedia,

Git adalah sistem kawalan versi terdistribusi yang dirancang untuk mengesan perubahan pada projek (kod) dalam pengembangan perisian. Ini bertujuan untuk menegakkan koordinasi, kolaborasi, kepantasan, dan kecekapan di antara pemaju.

GitHub, sebaliknya, adalah perkhidmatan hosting berasaskan web untuk kawalan versi menggunakan Git. Ia menawarkan semua fungsi kawalan versi diedarkan dan pengurusan kod sumber Git serta menambahkan lebih banyak ciri untuk kod komputer.

Cara Memasang Git pada Windows

Muat turun dan pasang Git untuk Windows Installer terkini di sini.

Cara Memasang Git di Linux

Berikut adalah arahan berdasarkan distro Linux anda:

Debian atau Ubuntu

sudo apt-get update sudo apt-get install git

Fedora

sudo dnf install git

CentOS

sudo yum install git

Arch Linux

sudo pacman -Sy git

Gentoo

sudo emerge --ask --verbose dev-vcs/git

Cara Memasang Git pada Mac

Muat turun dan pasang pemasang Git untuk Mac terkini di sini.

Atau anda boleh menaip arahan ini:

brew install git

Sekarang kita sudah memasang Git, mari beralih ke tutorial.

Pengenalan kepada Git Clone

Git membolehkan anda mengurus dan memodifikasi projek anda dalam "repositori". Repositori ini disimpan di perkhidmatan hosting berasaskan web untuk kawalan versi, seperti GitHub.

Anda kemudian boleh mengklon repositori ini ke mesin tempatan anda dan mempunyai semua fail dan cawangan secara tempatan (saya akan menerangkan lebih lanjut mengenai cawangan tidak lama lagi).

Contohnya, anda boleh mengklon repositori freeCodeCamp dengan SSH seperti:

git clone [email protected]:freeCodeCamp/freeCodeCamp.git

Pengenalan Cawangan Git

Semasa mengerjakan projek, anda mungkin akan mempunyai ciri yang berbeza. Dan pelbagai penyumbang akan mengusahakan projek ini dan ciri-cirinya.

Cabang membolehkan anda membuat "taman permainan" dengan fail yang sama di mastercawangan. Anda boleh menggunakan cabang ini untuk membina ciri bebas, menguji ciri baru, membuat perubahan pecah, membuat pembaikan, menulis dokumen atau mencuba idea tanpa melanggar atau menjejaskan kod pengeluaran. Apabila anda selesai, anda menggabungkan cawangan menjadi mastercawangan pengeluaran .

Branching adalah konsep teras di Git yang juga digunakan di GitHub untuk menguruskan aliran kerja dari pelbagai versi dari satu projek. The mastercawangan sentiasa cawangan lalai dalam repositori yang paling sering dianggap "pengeluaran dan kod deployable". Cawangan baru suka passwordless-authatau refactor-signup-uxboleh dibuat dari mastercawangan.

Cara Klon Cawangan Git

Walaupun anda dapat mengklon repositori dengan git cloneperintah, ingatlah bahawa ini mengklon cabang dan alat kawalan jauh HEAD. Ini biasanya mastersecara lalai dan merangkumi semua cawangan lain di repositori.

Oleh itu, apabila anda mengklon repositori, anda mengklon masterdan semua cabang lain. Ini bererti anda perlu memeriksa cawangan lain sendiri.

Katakan tugas anda pada projek adalah mengerjakan satu ciri untuk menambahkan pengesahan tanpa kata laluan ke papan pemuka pengguna. Dan ciri ini ada di passwordless-authcawangan.

Anda sebenarnya tidak memerlukan mastercabang kerana "cabang ciri" anda akan digabungkan menjadi mastersesudahnya. Lalu bagaimana anda mengklon passwordless-authcabang ini tanpa mengambil semua cawangan lain dengan "sekumpulan fail yang anda tidak perlukan"?

Saya membuat repositori sampel ini untuk menjelaskan perkara ini. Repositori ini menyimpan blog ringkas yang dibina dengan Nextjs dan mempunyai empat cabang dummy:

  • tuan
  • penipu
  • pementasan
  • tanpa kata laluan

Dalam Nextjs, setiap fail di dalam folder pages/apidipetakan ke /api/*jalan dan akan dianggap sebagai titik akhir API dan bukan page. Di repositori kami, saya telah membuat API dummy yang berbeza dalam direktori ini untuk membuat setiap cabang berbeza.

The mastercawangan memegang fail halaman / api / hello.js manakala passwordless-authmemegang fail halaman / api / auth.js . Setiap fail hanya mengembalikan respons teks palsu. Lihat masterrespons API halo di sini (dengan mesej khas untuk anda?).

Mari kloning repositori:

git clone [email protected]:BolajiAyodeji/nextjs-blog.git

Ini memberi kita akses ke semua cawangan di repositori ini dan anda boleh beralih antara satu sama lain dengan mudah untuk melihat setiap versi dan failnya.

git branch -a

Tertanya-tanya dari mana cawangan jauh / asal / .. ?

Apabila anda mengklon repositori, anda menarik data dari repositori di internet atau pelayan dalaman yang dikenali sebagai alat kawalan jauh . Kata asal adalah alias yang dibuat oleh Git anda untuk menggantikan URL jauh (anda boleh menukar atau menentukan alias lain jika anda mahu).

Ini alat kawalan jauh / asal / .. cawangan menunjukkan anda kembali kepada repositori asal anda diklon dari internet supaya anda masih boleh melakukan tarik / tolak dari asalan.

Oleh itu, apabila anda mengklon mastermesin anda, remotes/origin/masteradalah mastercawangan asli di internet, dan masterberada di mesin tempatan anda. Oleh itu, anda akan menarik / menolak dari dan ke remotes/origin/master.

Ringkasnya Remote adalah URL yang mengarahkan anda ke repositori di internet sementara Origin adalah alias untuk URL jarak jauh ini.

Cara Menglon Cawangan Khusus

Sekarang mari kita kloning cabang tertentu dari repositori demo kami. Terdapat dua cara untuk mengklon cabang tertentu. Anda boleh:

  • Klon repositori, ambil semua cawangan, dan periksa ke cabang tertentu dengan segera.
  • Klon repositori dan ambil hanya satu cabang.

Pilihan Satu

git clone --branch  

atau

git clone -b  

Dengan ini, anda mengambil semua cawangan di repositori, checkout ke yang anda tentukan, dan cabang tertentu menjadi cawangan tempatan yang dikonfigurasi untuk git pushdan git pull. Tetapi anda masih mengambil semua fail dari setiap cawangan. Ini mungkin bukan yang anda mahukan bukan? ?

Mari mengujinya:

 git clone -b passwordless-auth [email protected]:BolajiAyodeji/nextjs-blog.git

Ini secara automatik dikonfigurasi passwordless-authsebagai cawangan tempatan tetapi masih menjejaki cawangan lain.

Pilihan Dua

git clone --branch  --single-branch 

atau

git clone -b  --single-branch 

Ini melakukan tindakan yang sama seperti pilihan satu, kecuali --single-branchpilihan tersebut diperkenalkan dalam versi Git 1.7.10 dan yang lebih baru. Ini membolehkan anda hanya mengambil fail dari cawangan yang ditentukan tanpa mengambil cawangan lain.

Mari mengujinya:

git clone -b passwordless-auth --single-branch [email protected]:BolajiAyodeji/nextjs-blog.git

Ini secara automatik dikonfigurasi passwordless-authsebagai cawangan tempatan dan hanya menjejaki cawangan ini.

Sekiranya anda menjalankan, cd pages/apianda akan menemui auth.jsfail di passwordless-authcawangan seperti yang diharapkan dari persediaan sebelumnya.

Kesimpulannya

Anda mungkin kehabisan internet atau ruang penyimpanan tetapi anda perlu mengerjakan tugas di cawangan tertentu. Atau anda mungkin mahu mengklon cabang tertentu dengan fail terhad kerana pelbagai sebab. Nasib baik, Git memberi anda kelonggaran untuk melakukan ini. Lenturkan otot anda dan cubalah, ada banyak lagi "Git" yang perlu dipelajari.

Satu demi satu, ya? ✌?