Cara Menggunakan Git Branching & Merging

Introduction

Git adalah salah satu software penting dalam suatu pengembangan aplikasi atau website, karena fungsi git sendiri adalah mengatur versi dari source code program kalian ketika memberika tanda baris dan kode mana yang ditambah atau diganti nantinya, dan dalam artikel ini saya akan membahas tentang bagaimana cara kita menggunakan tools Git untuk metod Branching dan juga Merging.

Prepare

Sebelum mempelajari bagaimana cara mengoperasikan Git, anda terlebih dahulu perlu menginstall aplikasi git di device yang anda gunakan, anda bisa menginstall/memasang Git baik di windows maupun linux, kebetulan saya disini menggunakan System Operasi Windows tapi saya install WSL Ubuntu 20.04 di OS tsb, dan sudah tahu cara untuk basic overflow dan cara mengoperasikanya, kunjungi juga beberapa artikel tentang Git dibawah ini :

Cara Menggunakan Git Branching & Merging

1. Git : Branching

Jika diartikan kedalam bahasa indonesia, Branch artinya ranting. Yang dimaksud dalam hal ini adalah sebuah cabang pengembangan aplikasi seperti yang kita ketahui dalam sebuah status aplikasi ada yang disebut beta, RC (Release Candidate), dan Stable.

Pertanyaanya adalah bagaimana cara developer membedakan yang mana kondisi Stable, Beta ataupun RC ? nah Branch git bisa digunakan untuk menangani hal ini.

Untuk melihat status / lokasi branch yang kita miliki bisa menggunakan perinta "git branch -a" , dan apabila kita ingin membuat branch kita bisa membuat dengan perintah "git branch nama-branch" .

  • Create new branch
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git branch -a
  0a
* master
  remotes/origin/master
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git branch edisi1.2
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git branch -a
  0a
  edisi1.2
* master
  remotes/origin/master
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$
  • Untuk berpindah branch gunakan perintah berikut
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git checkout edisi1.2 
Switched to branch 'edisi1.2'
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git branch -a
  0a
* edisi1.2
  master
  remotes/origin/master
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$
  • Jika kita ingin merubah nama branch yang kita miliki, maka kita bisa gunakan perintah berikut :
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git branch -m edisi1.2 baru1.1
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git branch -a
  0a
* baru1.1
  master
  remotes/origin/master
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$
  • Delete branch
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git checkout master 
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git branch -d baru1.1
Deleted branch baru1.1 (was db397a5).
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git branch -a
  0a
* master
  remotes/origin/master
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$

Disini kita juga bisa membuat branch dan langsung berpindah ke branch baru tersebut dengan perintah sebagai berikut, dan hasil yang anda tulis dan commit hanya akan ada di branch tersebut tidak akan mempengaruhi branch master.

gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git branch newone
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git checkout newone 
Switched to branch 'newone'
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git status
On branch newone
nothing to commit, working tree clean
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ echo "Testing cok" > test.html

gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git add .
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git commit -am "Adding one file in new branch"
[newone f506161] Adding one file in new branch
 1 file changed, 1 insertion(+)
 create mode 100644 test.html
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git status
On branch newone
nothing to commit, working tree clean
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git log --oneline
f506161 (HEAD -> newone) Adding one file in new branch
db397a5 (origin/master, master, 0a) Rambo Learn About Git
b9360db Add age rambo
f9c8638 Add file rambo
8074295 Adding git igonre file to exclude unwanted file
402732e Adding git igonre file to exclude unwanted file
831003b Delete file test123.txt
a8c7f51 Rename file test2.txt to test212.txt
8d0034c Adding some several files
c48174f Modified text in newadd1.txt
c3661ae Add new 1 file txt
a780a40 add file fresh1
d11d54a Edit file Readme
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$

Kita berhasil membuat branch baru dan melakukan checkout dan juga commit file baru tanpa mengganggu branch master.

  • Kita juga dapat melakukan pengecekan perubahan seperti apa yang dilakukan pada branch baru:
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git diff master newone 
diff --git a/test.html b/test.html
new file mode 100644
index 0000000..74424cc
--- /dev/null
+++ b/test.html
@@ -0,0 +1 @@
+Testing cok
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$

2. Git : Merging

Nah selanjutnya disini kita akan membahas tentang merging yang fungsinya adalah menggabungkan branch baru yang kita buat dengan branch master.

  • Merge branch ke master
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git merge newone 
Updating db397a5..16afc91
Fast-forward
 test.html | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 test.html
  • Check log history bahwa branch sudah di merge
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git hist
* 16afc91 (HEAD -> master, newone)  edit file test.html
* f506161 Adding one file in new branch
* db397a5 (origin/master, 0a) Rambo Learn About Git
* b9360db Add age rambo
* f9c8638 Add file rambo
* 8074295 Adding git igonre file to exclude unwanted file
* 402732e Adding git igonre file to exclude unwanted file
* 831003b Delete file test123.txt
* a8c7f51 Rename file test2.txt to test212.txt
* 8d0034c Adding some several files
* c48174f Modified text in newadd1.txt
* c3661ae Add new 1 file txt
* a780a40 add file fresh1
* d11d54a Edit file Readme
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$

* 16afc91 (HEAD -> master, newone) edit file test.html -> yang artinya berhasil melakukan merge dengan branch master.

Disini kita juga bisa menghapus branch yang sudah di merge, agar sepenuhnya branch tersebut hilang dan hanya menyisakan branch master / branch utama :

  • Delete branch yang sudah di merge
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git branch -a
  0a
* master
  newone
  remotes/origin/master
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git branch -D newone 
Deleted branch newone (was 16afc91).
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git branch -a
  0a
* master
  remotes/origin/master
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git hist
* 16afc91 (HEAD -> master)  edit file test.html
* f506161 Adding one file in new branch
* db397a5 (origin/master, 0a) Rambo Learn About Git
* b9360db Add age rambo
* f9c8638 Add file rambo
* 8074295 Adding git igonre file to exclude unwanted file
* 402732e Adding git igonre file to exclude unwanted file
* 831003b Delete file test123.txt
* a8c7f51 Rename file test2.txt to test212.txt
* 8d0034c Adding some several files
* c48174f Modified text in newadd1.txt
* c3661ae Add new 1 file txt
* a780a40 add file fresh1
* d11d54a Edit file Readme
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$

Diatas Git branch newone sudah kita delete permanent dan hanya menyisakan branch master saja.

3. Git : Conflicting Merges and Resolution

Terkadang dalam kita melakukan merging, kita akan mendapatkan beberapa masalah salah satunya konflik file dalam melakukan merging dan untuk itu kita bisa melakukan resolusi sebagai solusinya.

  • Contoh create new branch lalu buat suatu file
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git checkout -b real
Switched to a new branch 'real'
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ nano tes.html
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git st
#On branch real
#Untracked files:
#  (use "git add <file>..." to include in what will be committed)
#        tes.html

nothing added to commit but untracked files present (use "git add" to track)
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git add tes.html
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git commit -am "Making changes to tes.html"
[real 4c7f5f5] Making changes to tes.html
 1 file changed, 1 insertion(+)
 create mode 100644 tes.html
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$
  • Kemudian kembali ke branch master lalu buat file dan isi yang sama yang seperti kita buat tadi
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ nano tes.html
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git status
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        tes.html

nothing added to commit but untracked files present (use "git add" to track)
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$

Maka saat kita melakukan commit maka akan terjadi conflicting seperti berikut :

gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git add .
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git commit -am "Adding conflicting changes for Git example"
[master d8a7201] Adding conflicting changes for Git example
 1 file changed, 1 insertion(+)
 create mode 100644 tes.html
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git hist
* d8a7201 (HEAD -> master) Adding conflicting changes for Git example
| * 4c7f5f5 (real) Making changes to tes.html
|/
* 16afc91  edit file test.html
* f506161 Adding one file in new branch
* db397a5 (origin/master, 0a) Rambo Learn About Git
* b9360db Add age rambo
* f9c8638 Add file rambo
* 8074295 Adding git igonre file to exclude unwanted file
* 402732e Adding git igonre file to exclude unwanted file
* 831003b Delete file test123.txt
* a8c7f51 Rename file test2.txt to test212.txt
* 8d0034c Adding some several files
* c48174f Modified text in newadd1.txt
* c3661ae Add new 1 file txt
* a780a40 add file fresh1
* d11d54a Edit file Readme
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$
  • Kemudian saat di merge dia error :
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git merge real
CONFLICT (content) : tMerge conflict in tes.html
Automatic merge failed: fix conflicts and then commit the result.
  • Untuk mengatasi hal tersebut maka gunakan perintah berikut, sebelumnya anda harus mengedit file tes.html atau file nya disamakan dengan branch real tsb :
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ nano tes.html
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git status
#On branch master
#Your branch is ahead of 'origin/master' by 7 commits.
#  (use "git push" to publish your local commits)

#Changes not staged for commit:
#  (use "git add <file>..." to update what will be committed)
#  (use "git restore <file>..." to discard changes in working directory)
#       modified:   tes.html

no changes added to commit (use "git add" and/or "git commit -a")
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git commit -am "Done resolving merge conflicts"
[master b36dc85] Done resolving merge conflicts
 1 file changed, 1 insertion(+), 1 deletion(-)
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git merge real
Already up to date.

Disini setelah kita melakukan merge yang sebelumnya conflict berubah menjadi already up to date yang artinya di dalam branch master maupun branch real file sudah sama isinya dan tidak conflict lagi.

  • Setelah berhasil merge maka selanjutnya check history dan delete branchnya.
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git log --graph --oneline --decorate
* b36dc85 (HEAD -> master) Done resolving merge conflicts
* 6855696  edit file tes.html
* 051bcf7 Adding conflicting changes for Git example
*   700876f Merge branch 'real'
|\
| * 4c7f5f5 (real) Making changes to tes.html
* | d8a7201 Adding conflicting changes for Git example
|/
* 16afc91  edit file test.html
* f506161 Adding one file in new branch
* db397a5 (origin/master, 0a) Rambo Learn About Git
* b9360db Add age rambo
* f9c8638 Add file rambo
* 8074295 Adding git igonre file to exclude unwanted file
* 402732e Adding git igonre file to exclude unwanted file
* 831003b Delete file test123.txt
* a8c7f51 Rename file test2.txt to test212.txt
* 8d0034c Adding some several files
* c48174f Modified text in newadd1.txt
* c3661ae Add new 1 file txt
* a780a40 add file fresh1
* d11d54a Edit file Readme
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$
  • Delete branch real
gunawan@DESKTOP-KFCM1IQ:/mnt/d/Github/belajar-git$ git branch -D real
Deleted branch real (was 4c7f5f5).

Kita bisa lihat disini bahwa yang berada di persgi hijau adalah branch real yang kita merge kedalam branch master.

Selamat mencoba.

Leave a Reply

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