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.
Admin website igunawan.com, System Administrator, DevOps Engineer