Tuesday, May 8, 2012

Belajar Git: Branch dan Strategi Pembagian Tugas

Jika saya bekerja dalam sebuah tim yang terdiri dari beberapa orang, strategi umum yang saya pakai dalam memakai Git adalah untuk setiap anggota tim membuat branch (=cabang) tersendiri dari kode yang mereka sedang kerjakan. Setelah kode tersebut selesai dibuat, lolos dari segala uji, dan telah melalui code review baru branch ini di merge dengan cabang utama dari aplikasi. Kenapa demikian:
  1. Dengan cara seperti ini maka kita yakin cabang utama (=master) akan berisikan kode yang tanpa kesalahan;
  2. Proses pengembangan tidak mungkin berjalan mulus tanpa masalah; si programmer pasti akan mengalami kesalahan-kesalahan: sintaks, semantik, dll. Dengan memakai branch maka kesalahan-kesalahan sementara ini tidak akan terbawa ke cabang utama tetapi terlokalisir pada cabang si programmer tersebut;
  3. Dengan terlokasirnya kesalahan-kesalahan sementara ini maka akan mengurangi pusingnya anggota tim yang lain yang juga pasti mengalamai kesalahan-kesalahan dalam proses pengembangan mereka. Sudah kode sendiri ada masalah dan ditambah kesalahan orang lain lagi apa tidak tambah pusing begitu?! :)

Apa itu Branch

Jika anda melakukan branch maka anda pada dasarnya membuat suatu cabang dari repository anda. Jika anda membuat perubahan dan melakukan commit pada cabang ini maka ini hanya terjadi pada cabang tersebut dan tidak akan berdampak pada cabang utama maupun cabang-cabang  lain yang mungkin ada. Disamping itu cabang ini nantinya bisa digabung (=merge) dengan cabang-cabang yang lain atau disatukan kembali dengan cabang utama.

Mari kita lihat contoh pemakaiannya.

Langkah-langkah

  1. Buat branch baru bernama cabangku:
    git branch cabangku
    
  2. Lihat branch yang terdaftar pada mesin anda:
    git branch
    
    Keluaran dari perintah ini kira-kira seperti berikut:
     cabangku
    * master
     origin
    
    Perhatikan cabang yang saat ini aktif adalah yang diberi tanda bintang (*), yaitu master pada tampilan di atas.
  3. Pindah ke cabangku:
    git checkout cabangku
    
  4. Buat segala perubahan seperti biasa dan janga lupa untuk melakukan commit pada perubahan-perubahan tersebut. Perhatikan disini saat anda kirim perubahan dari cabang ke server harus disebutkan cabang anda:
    git push origin cabangku
    
  5. Gabungkan cabangku ke cabang utama:
    git checkout master
    git merge cabangku
    
    Perintah pertama bertujuan untuk pindah ke cabang utama kita (master) sedangankan perintah kedua ada permintaan untuk melakukan proses merge itu sendiri.
  6. Nah dalam proses penggabungan ini kemungkinan besar anda akan mengalamai konflik maka untuk mengatasinya tinggal melakukan langkah-langkah yang telah saya uraikan pada tulisan sebelum ini tentang penanganan konflik;
  7. Jika anda mau menghapus cabangku:
    git branch -D cabangku
    

Kembali ke: Belajar Git


4 comments:

  1. Permisi gan, numpang tanya nih.

    misalnya ane punya project yang dikerjakan oleh 2 orang (ane dan teman ane)
    misalnya ane punya file dengan nama index.html di branch master
    kemudian teman saya buat branch baru,
    nah pertanyaannya apakah kita boleh mengubah file yang sama (index.html) pada branch yang berbeda?

    Terimakasih sebelumnya

    ReplyDelete
    Replies
    1. Boleh dan itu cara kerja yg dianjurkan. Sebelum melakukan perubahan apapun setiap anggota membuat branch-nya sendiri dan branch itu yg diubah. Segala perubahan dalam suatu branch hanya tampak pada branch tersebut, branch lain tidak akan melihatnya, demikian juga dgn branch master. Dengan demikian branch master tetap menjadi branch yg asli tanpa modifikasi utk menjadi acuan yg lain. Setelah modifikasi selesai dan diyakini telah benar baru branch di merge ke master utk dibagikan ke yg lain.

      Delete
  2. Akhirnya ketemu juga artikel yang ngomongin masalah stategi karena selama ini saya dan tim hanya menggunakan branch master dan editingnya berdasarkan waktu (siang / malam) atau perfile atau berdasarkan koordinasi terlebih dulu -_- dan lagi ketika saya lihat tahun penulisannya... membuat saya sadar bahwa saya mainnya kurang jauh :D

    ReplyDelete