Model Pengembangan Kolaboratif Github

Dilansir dari halaman nya Git

Model Pengembangan Kolaboratif Github ada 2 :
1. Fork dan Pull Model
2. Shared Repo Model


Untuk Shared Repo Model bisa baca :

Bekerja sama menggunakan Git (Bag 1. Tanpa Branch)


Fork dan Pull Model sering digunakan dalam project Open Source. Oleh karena itu agar temen-temen terbiasa, saya akan bantu menjelaskan Fork dan Pull Model. Berikut diagram nya :

Kita dapat melakukan fork dari Repo orang lain. Fork ini seperti copy Repo orang lain masuk ke account Github kita.
Kita bisa melakukan modifikasi, testing, dan lain-lain terhadap Repo hasil Fork ini.
Jika kita ingin kontribusi terhadap Repo orang lain, maka kita harus melakukan Pull Request .
Nanti pemilik Repo aslinya akan review kontribusi kita. Bisa diterima dan di merge dengan Repo asli, ditolak, atau bisa diberikan komentar untuk direvisi dahulu.

Langkah 1 : Memberikan Hak Akses kepada kontributor

Ini dilakukan jika Repo nya bersifat Private. Jika Repo Public, tidak perlu langkah ini, Kontributor tinggal langsung melakukan Fork.
Detail cara memberikan Hak Akses dapat dilihat di link ini

Langkah 2 : Melakukan Fork

Pilih Repo yang akan di fork, lalu tekan tombol Fork

Setelah melakukan Fork, maka tampilan nya akan berubah seperti berikut.
Terlihat Repo Coba1 ini adalah hasil fork dari Repo coba1 usernya chandra-mulyana.
Nah hasil fork ini boleh kita modifikasi dan testing tanpa berdampak ke Repo aslinya.

Langkah 3 : Clone Repo hasil Fork

Clone Repo hasil Fork ini. Kali ini proses Clone nya akan menggunakan HTTPS

$ git clone https://github.com/stelselmatig/coba1.git
Cloning into 'coba1'…
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 21 (delta 6), reused 15 (delta 2), pack-reused 0
Receiving objects: 100% (21/21), done.
Resolving deltas: 100% (6/6), done.

$ cd coba1

$ git remote -v
origin  https://github.com/stelselmatig/coba1.git (fetch)
origin  https://github.com/stelselmatig/coba1.git (push)

Terlihat saat ini sudah berhasil clone.

Langkah 4 : Menambahkan remote upstream repository

Dengan perintah

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

jadi untuk kasus ini kita gunakan perintah

$ git remote add upstream https://github.com/chandra-mulyana/coba1.git

Jika dilihat menggunakan git remote -v

$ git remote -v
origin  https://github.com/stelselmatig/coba1.git (fetch)
origin  https://github.com/stelselmatig/coba1.git (push)
upstream        https://github.com/chandra-mulyana/coba1.git (fetch)
upstream        https://github.com/chandra-mulyana/coba1.git (push)

Langkah 5 : Merge Upstream Repo

Sebelum melakukan modifikasi di local repo, ada baiknya kita sync dan merge Upstream Repo (Repo Aslinya) dengan local repo dengan perintah berikut

$ git pull upstream master
From https://github.com/chandra-mulyana/coba1
branch            master     -> FETCH_HEAD
Already up to date. 

Misalnya kita tambahkan fileup1.txt di Repo Upstream

dan di repo lokal User 2, kita lakukan PULL agar isi Repo Local User 2 sama dengan Repo Upstream. Terlihat ada penambahan fileup1.txt di repo lokal User 2.

$ git pull upstream master
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0
Unpacking objects: 100% (3/3), 273 bytes | 14.00 KiB/s, done.
From https://github.com/chandra-mulyana/coba1
branch            master     -> FETCH_HEAD
9c7c2d6..97e8785  master     -> upstream/master
Updating 9c7c2d6..97e8785
Fast-forward
fileup1.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 fileup1.txt 

Jika memang ada conflict, silahkan review dan perbaiki conflict nya, commit , lalu push ke Repo hasil Fork

Langkah 6 : User 2 melakukan penambahan Modul

Setelah Repo Local User 2 sama dengan Repo Upstream, selanjutnya User 2 melakukan penambahan folder modul4 dan didalamnya ada file dengan nama isi_modul_4.txt. User 2 melakukan commit lalu push dengan perintah

$ git push origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 329 bytes | 329.00 KiB/s, done.
Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/stelselmatig/coba1.git
   97e8785..060472a  master -> master

Tampilan di Repo Fork adalah sebagai berikut . Terlihat modul4 sudah ada di Repo Fork.

Langkah 7 : User 2 membuat Pull Request

Pilih Tab Pull Request, lalu click New Pull Request

Bandingkan antara Original Repo dengan Fork. Terlihat perubahan yang terjadi dimana saja. Lalu tekan tombol Create Pull Request

1. Isikan Judul Pull Request nya
2. Isikan Deskripsi dari Pull Request. Silahkan berikan deskripsi yang informatif
3. Untuk saat ini, Unchecked “Allow Edit by Mainteners” . Info lebih lanjut perihal ini bisa dilihat disini
4. Tekan tombol Create Pull Request

Github akan kirim notifikasi berupa email ke User 1 beserta detail dari Pull Request

Langkah 8 : User 1 Merge Pull Request

User 1 pilih Tab Pull Request, lalu pilih Pull Request yang akan direview.

Jika sudah tidak ada issue, User 1 bisa menekan tombol Merge Pull Request

isikan deskripsi nya proses Merge

Terlihat sekarang di Original Repo sudah ada Modul 4

1 thought on “Model Pengembangan Kolaboratif Github”

  1. Pingback: Bekerja sama menggunakan Git (Bag 1. Tanpa Branch) - Stelselmatig

Leave a Comment

Your email address will not be published. Required fields are marked *