Dasar Branching dan Merging
Halo teman-teman, di postingan kali ini kita akan belajar dasar-dasar dari
branching dan merging pada Git. Bagi yang belum tau dengan istilah
Branching dan Merging, mudahnya branching itu proses membuat
cabang dari commit yang kita point saat ini. Dan Merging adalah
proses menggabungkan beberapa cabang jadi satu. Kalo masih bingung kalian
bisa membaca tulisan saya sebelumnya tentang
Konsep dasar branch.
Supaya lebih paham kita akan menggunakan ilustrasi kasus yang sudah
disediakan di website resmi Git nya. Jika kaliang ingin membaca dari website
resminya kalian bisa klik
disini.
Ilustrasi kasusnya seperti ini:
Basic Branching
Pertama, katakanlah kamu sedang mengerjakan sebuah website dan kamu
sudah membuat beberapa commit.
Lalu kamu dapat masukkan untuk mengerjakan sebuah issue (mungkin fitur
baru), sebut saja issue #53. Kamu ingin mengerjakan issue ini di sebuah
branch baru, maka kamu membuat sebuah branch baru dan langsung berpindah
ke branch itu. Untuk melakukannya kamu menggunakan perintah.
$ git checkout -b iss53
Switched to a new branch "iss53"
Lalu kamu mendapat laporan terdapat bug di website dan kamu harus
menyelesaikannya secepatnya. Kamu ingin berindah branch ke branch master.
Catatan! jika kamu mempunyai pekerjaan di working direktori ketika masih di
branch iss53 dan kamu tidak memindahkannya ke staging area dan
ternyata pekerjaanmu itu memiliki conflict dengan file yang ada di branch
mater, Git tidak akan mengizinkanmu untuk berpindah branch ke master. Lebih
baik kamu pindahkan ke staging area terlebih dahulu semuanya.
Kamu pindah branch ke master.
$ git checkout master
Switched to branch 'master'
Saat ini working direktori mu akan berubah seperti saat kamu meninggalkanya
di branch master. Lalu kamu mengerjakan bug tadi di sebuah branch baru
bernama hotfix.
$ git checkout -b hotfix
Switched to a new branch 'hotfix'
$ vim index.html
$ git commit -a -m 'fixed the broken email address'
[hotfix 1fb7853] fixed the broken email address
1 file changed, 2 insertions(+)
Lalu kamu test dan hasilnya tidak ada bug dan kamu siap untuk men-deploy nya ke production. Kamu me-merge branch hotfix dengan master.
$ git checkout master
$ git merge hotfix
Updating f42c576..3a0874c
Fast-forward
index.html | 2 ++
1 file changed, 2 insertions(+)
Kamu lihat ada tulisan Fast-forward , tulisan ini muncul karena commit yang kita tunjuk pada branch yang akan
kita merge itu saling berhubungan jadi ini sama saja seperti commit biasa
dan kita hanya memindahkan pointer branch master ke commit yang sama yang di
tunjuk oleh branch hotfix.
setelah bug berhasil diatasi kamu bisa kembali mengerjakan branch iss53 tapi sebelum itu kamu perlu menghapus branch hotfix karena sudah tidak dibutuhkan lagi.
$ git branch -d hotfix
Deleted branch hotfix (3a0874c).
Kamu kembali ke branch iss53 dan melakukan beberapa commit.
$ git checkout iss53
Switched to branch "iss53"
$ vim index.html
$ git commit -a -m 'finished the new footer [issue 53]'
[iss53 ad82d7a] finished the new footer [issue 53]
1 file changed, 1 insertion(+)
Basic Merging
Sekarang kamu sudah selesai mengerjakan issue #53 dan kamu mau me-merge nya
dengan branch master. Kamu memasukkan perintah.
$ git checkout master
Switched to branch 'master'
$ git merge iss53
Merge made by the 'recursive' strategy.
README | 1 +
1 file changed, 1 insertion(+)
Jika dilihat ini berbeda ketika kita me-merge hotfix dengan master tadi.
Ini karena kedua branch tersebut (iss53 dan master) tidak terhubung secara langsung dan memiliki perbedaan. Dalam kasus ini
Git melakukan simple three-way merge menggunakan dua snapshot dari
dua branch (iss53 dan master) dan common ancestor.
Sebagai ganti dari memindahkan pointer branch ke depan (seperti
fast-forward) Git membuat commit baru hasil dari merge yang dilakukan.
Penentuan Common ancestor dilakukan otomatis oleh Git, tidak seperti
CVS lama yang mengharuskan developer untuk menentukannya sendiri.
Basic merge conflict
Kadang , ketika melakukan merge tidak selalu mulus. Kita mendapati konflik karena kita mengedit bagian yang sama di dua branch tersebut. Kita harus me-resolve terlebih dahulu baru bisa commit.
<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
please contact us at support@github.com
</div>
>>>>>>> iss53:index.html
Kita akan menemukan file yang conflict seperti ini ketika melakukan resolve. Ini menunjukkan dua kode dari dua branch yang saling konflik. Bagian HEAD menunjukkan kode dari branch master lalu dipisahkan ==== dan bagian setelahnya menunjukkan kode dari branch iss53. Kita harus membenarkannya menjadi seperti ini.
<div id="footer">
please contact us at email.support@github.com
</div>
Tanda-tanda sebelumnya jangan lupa untuk dihilangkan juga. Setelah selesai
me-resolve baru kamu bisa melakukan merge.
Jika kamu masih bingung dengan branch dan merge kamu bisa menonton beberapa
video dibawah.
Oke mungkin segitu dulu aja yang bisa saya bagikan ke kalian, jika kalian
suka dengan postingan ini kalian bisa membagikannya ke teman-teman kalian.
Kalian bisa subscribe supaya tidak ketinggalan postingan-postingan
saya selanjutnya. Jangan sungkan juga untuk berkomentar ya.. Sampai jumpa
lagi di postingan saya selanjutnya.
loading...
Comments
Post a Comment