Berkolaborasi dengan menggunakan perintah pull

Selesai

Dalam waktu henti di luar pekerjaan baru, Anda telah mengerjakan situs web yang menghosting foto kucing. Anda telah menggunakan Git untuk kontrol versi, dan saatnya untuk mengundang kolaborator ke dalam proyek. Saat pesta piza di rumah Anda, teman dan sesama pecinta kucing Anda, Alice, menawarkan untuk membantu mewujudkan visi Anda, dan Anda dengan bersemangat menerimanya.

Alice pertama-tama perlu membuat salinan proyek Git Anda. Kemudian, Alice akan mengirim perubahannya kepada Anda saat ia membuatnya. Situasi ini adalah saat sifat alami Git yang didistribusikan bersinar. Dengan menggunakan Git, dua orang atau lebih dapat bekerja sama pada proyek tanpa takut menimpa pekerjaan orang lain. Selain itu, Anda dapat memeriksa pekerjaan Alice sebelum menggabungkannya dengan pekerjaan Anda. (Alice berbakat, tetapi tidak ada pengembang yang sempurna. Percayai tetapi pastikan.)

Di pelajaran ini, Anda mempelajari cara mengklonakan repositori (juga disebut repositori) untuk membuatnya tersedia untuk orang lain. Anda juga belajar untuk menggunakan salah satu fitur terpenting Git: permintaan pull.

Mengklonakan repositori (klon git)

Di Git, Anda menyalin repositori dengan mengklonakannya menggunakan perintah git clone. Anda dapat mengklonakan repositori di mana pun ia disimpan, selama Anda memiliki URL atau jalur untuk mengarahkannya.

git clone menerima jalur sistem file; jalur SSH (misalnya, git@example.com:alice/Cats—Anda akan terbiasa dengan formulir ini jika Anda telah menggunakan Rsync atau SCP); atau URL, biasanya yang dimulai dengan file:, git:, atau ssh. Berbagai bentuk dijelaskan dalam dokumentasi untuk git clone. Di Unix dan Linux, operasi pengklonaan menggunakan tautan keras, sehingga cepat dan menggunakan ruang minimal karena hanya entri direktori yang perlu disalin, bukan file.

Repositori jarak jauh (penarikan git)

Ketika Git mengklonakan repositori, git membuat referensi ke repositori asli yang disebut jarak jauh dengan menggunakan nama origin. Ia menyiapkan repositori yang diklonakan agar repositori yang diklonakan tersebut menarik dari, atau mengambil data dari, repositori jarak jauh. (Git juga dapat mendorong. Anda akan mempelajari tentang pendorongan di Git nanti di modul ini.) origin adalah lokasi default bagi Git untuk menarik perubahan dan mendorong perubahan. git pull menyalin perubahan dari repositori jarak jauh ke repositori lokal. Perintah git pull ini sangat efisien karena hanya menyalin penerapan dan objek baru, dan kemudian memeriksanya ke dalam pohon pekerjaan Anda.

Anda menarik dari origin dengan menggunakan perintah git pull. Ada gunanya membandingkan git pull dengan metode penyalinan file lainnya. Perintah scp menyalin semuanya. (scp mirip dengan perintah cp Unix, kecuali bahwa file yang disalin tidak harus berada di komputer yang sama.) Jika ada 10.000 file di direktori jarak jauh, scp menyalin semuanya. Program yang lebih efisien yang disebut Rsync melihat setiap file di direktori lokal dan jarak jauh dan hanya menyalin apa yang berbeda. Rsync sering digunakan untuk membuat pencadangan, tetapi masih harus melakukan hash pada setiap file kecuali file memiliki ukuran atau tanggal pembuatan yang berbeda.

Git hanya melihat penerapan. Ia sudah mengetahui penerapan terakhir yang didapat dari repositori jarak jauh karena ia menyimpan daftar penerapan. Kemudian, Git memberi tahu komputer bahwa ia menyalin untuk mengirimkan semua yang berubah, termasuk penerapan baru dan objek yang ia arahkan. Penerapan dan objek tersebut dibundel di file yang disebut paket dan dikirimkan dalam satu batch. Akhirnya, Git memperbarui pohon pekerjaan dengan membongkar semua objek yang berubah dan menggabungkannya (jika perlu) dengan penerapan dan objek di pohon pekerjaan.

Git menarik atau mendorong hanya saat Anda menyuruhnya. Itu berbeda dari, katakanlah, Dropbox, yang harus meminta sistem operasi untuk memberi tahunya jika ada perubahan apa pun yang Anda buat di foldernya dan sesekali bertanya ke server apakah orang lain telah membuat perubahan.

Membuat permintaan pull (permintaan pull git)

Setelah pengembang lain, seperti Alice, mengklonakan repositori Anda dan membuat beberapa perubahan secara lokal, mereka ingin menggabungkan perubahan tersebut kembali ke repositori asli. Mungkin kelihatannya mendorong perubahan tersebut ke repositori asli adalah pendekatan yang tepat. Akan tetapi, pendorongan ke repositori asli akan gagal karena pengguna lain tidak memiliki izin untuk membuat perubahan pada repositori Anda. Dan memang seharusnya begitu. Untuk saat ini, Anda ingin meninjau perubahan yang masuk sebelum menggabungkannya ke dalam basis kode utama.

Untuk saat ini, Alice harus mengirimkan permintaan pull untuk meminta Anda menarik perubahannya ke basis kode utama. Alice dapat melakukannya dengan menggunakan git request-pull, yang mungkin terlihat seperti contoh ini:

git request-pull -p origin/main .

Alice mengacu ke cabang main pada jarak jauh origin sebagai origin/main.

Permintaan pull ini pada dasarnya sama dengan permintaan pull pada GitHub (GitHub adalah tempat untuk menyimpan kode, yang tidak kita bahas di modul ini). Permintaan pull memberi Anda kesempatan untuk meninjau perubahan kolaborator lain sebelum Anda menggabungkan pekerjaan mereka ke dalam pekerjaan yang Anda lakukan pada situs web. Tinjauan kode adalah bagian penting—beberapa orang akan mengatakan bagian terpenting—dari pemrograman kolaboratif.

Membuat jarak jauh (jarak jauh git) dan menyelesaikan permintaan pull (penarikan git)

Sebagai pemilik proyek, Anda perlu tahu cara menggabungkan permintaan pull. Pertama-tama, Anda menggunakan perintah git remote untuk menyiapkan repositori pengembang lain sebagai jarak jauh. Kemudian, Anda menggunakan jarak jauh tersebut untuk penarikan dan permintaan pull dengan menggunakan perintah git pull.

Di balik layar, git pull adalah kombinasi dari dua operasi yang lebih sederhana: git fetch, yang mendapatkan perubahan, dan git merge, yang menggabungkan perubahan tersebut ke dalam repositori Anda. Dalam hal ini, penggabungan itu maju cepat, yang berarti bahwa Alice memiliki penerapan terbaru Anda di repositori mereka, sehingga penerapan mereka dapat ditambahkan ke depan riwayat Anda tanpa modifikasi apa pun.