Anda di halaman 1dari 77

Pemula

1. Apa itu Git dan Kenapa Penting Bagi Programmer?


2. Cara Install Git dan Konfigurasi Awal yang Harus Dilakukan
3. Cara Membuat Repositori Git dalam Proyek
4. Melihat Catatan Log Revisi
5. Melihat Perbandingan Revisi dengan Git Diff
6. Perintah untuk Membatalkan Revisi
7. Menggunakan Percabangan untuk Mencegah Konflik
8. Perbedaan Git checkout, Git Reset, dan Git Revert
9. Bekerja dengan Remote Repositori
10. Menggunakan Git Pull dan Git Fetch

Mahir
1. Github Workflow: Cara Berkontribusi di Proyek Open Source
2. Menggunakan Git pada Visual Studio Code (Lebih praktis!)
3. Cara Upload File ke Server FTP ala Git
4. Cara Menggunakan SSH di Github
5. Cara Membuat Halaman Github Kurang dari 10 Menit
6. Cara Menggunakan SSH untuk Bitbucket
7. Cara Membuat Halaman Github untuk Repositori

Bonus:

• Kumpulan 101+ Link Repositori dan Komunitas Open-source Indonesia di Github


• Bahaya! Password dan Token API Bisa Dicuri dengan Sangat Mudah di Github
Apa itu Git dan Kenapa Penting bagi
Programmer?
#Git

Git adalah salah satu tool yang sering digunakan dalam proyek pengembangan
software.

Git bahkan menjadi tool yang wajib dipahami oleh programmer, karena banyak
digunakan di mana-mana.

Pada kesempatan ini kita akan belajar Git dari dasar.

Artikel ini hanya akan membahas pengenalan Git saja. Untuk mempelajari Git lebih
lanjut, saya sudah menyediakan link di bagian akhir.

Mengenal Git
Git adalah salah satu sistem pengontrol versi (Version Control System) pada proyek
perangkat lunak yang diciptakan oleh Linus Torvalds.

Pengontrol versi bertugas mencatat setiap perubahan pada file proyek yang
dikerjakan oleh banyak orang maupun sendiri.
Git dikenal juga dengan distributed revision control (VCS terdistribusi), artinya
penyimpanan database Git tidak hanya berada dalam satu tempat saja.

Semua orang yang terlibat dalam pengkodean proyek akan menyimpan database Git,
sehingga akan memudahkan dalam mengelola proyek baik online maupun offline.

Dalam Git terdapat merge untuk menyebut aktifitas penggabungan kode.

Sedangkan pada VCS (Version Control System) yang terpusat… database disimpan
dalam satu tempat dan setiap perubahan disimpan ke sana.
VCS terpusat memiliki beberapa kekurangan:

• Semua tim harus terkoneksi ke jaringan untuk mengakses source-code;


• Tersimpan di satu tempat, nanti kalau server bermasalah bagaimana?

Karena itu, Git hadir untuk menutupi kerkurangan yang dimiliki oleh VCS terpusat.

Apa yang dilakukan oleh Git?


Git sebenarnya akan memantau semua perubahan yang terjadi pada file proyek. Lalu
menyimpannya ke dalam database.

Sebelum menggunakan Git:


Setelah menggunakan Git:

Apa perbedaannya?

Saat kita ingin menyimpan semua perubahan pada file, biasanya kita membuat file
baru dengan “save as”. Lalu, file akan menumpuk dalam direktori proyek seperti
pada ilustrasi di atas.

Tapi setelah menggunakan Git…


Hanya akan ada satu file dalam proyek dan perubahannya disimpan dalam database.

Git hanya akan menyimpan delta perubahannya saja, dia tidak akan menyimpan
seluruh isi file yang akan memakan banyak memori.

Git memungkinkan kita kembali ke versi revisi yang kita inginkan.

Kenapa Git Penting Bagi Programmer?

Jadi selain untuk mengontrol versi, git juga digunakan untuk kolaborasi.

Saat ini Git menjadi salah satu tool terpopuler yang digunakan pada pengembangan
software open souce maupun closed source.

Google, Microsoft, Facebook dan berbagai perusahaan raksasa lainnya menggunakan


Git.

Jadi, buat kamu yang punya impian ingin bekerja di sana, maka kamu harus bisa Git.
Selain itu, berikut ini ada beberapa menfaat yang akan kamu rasakan setelah bisa
menggunakan Git.

1. Bisa menyimpan seluruh versi source code;


2. Bisa paham cara kolaborasi dalam proyek;
3. Bisa ikut berkontribusi ke poryek open-source;
4. Lebih aman digunakan untuk kolaborasi, karena kita bisa tahu apa yang
diubah dan siapa yang mengubahnya.
5. Bisa memahami cara deploy aplikasi modern;
6. Bisa membuat blog dengan SSG.
7. dan sebagainya…
Tutorial Git #1: Cara Install Git dan
Konfigurasi Awal yang Harus Dilakukan

#Git

Kita sudah mengenal Git pada tulisan sebelumnya. Selanjutnya Kita akan melakukan
instalasi dan persiapan untuk mulai belajar Git.

Tulisan ini terbagi menjadi tiga bagian:

1. Cara Instalasi Git di Linux.


2. Cara Instalasi Git di Windows.
3. Konfigurasi Awal yang Harus dilakukan Setelah Menginstal Git.

Mari kita mulai…

1. Cara Install Git di Linux


Instalasi Git pada Distro keluarga Debian dapat menggunakan perintah apt.

sudo apt install git


atau

sudo apt-get install git


Pada Fedora:

yum install git


Setelah itu, coba perika versi yang terinstal dengan perintah:

git --version
Pada komputer saya, versi yang terinstal adalah versi 2.7.4.

2. Cara Install Git di Windows


Instalasi Git di Windows memang tidak seperti di Linux yang ketik perintah
langsung terinstal.

Kita harus men-download dulu, kemudian melakukan ritual next>next>finish.

Tapi dalam ritual tersebut, ada pilihan yang harus diperhatikan agar
perintah git dapat dikenali di CMD.

Download Git
Silahkan buka website resminya Git ( git-scm.com). Kemudian unduh Git sesuai
dengan arsitektur komputer kita. Kalau menggunakan 64bit, unduh yang 64bit.
Begitu juga kalau menggunakan 32bit.

Langkah-langkah Install Git di Windows


Baiklah, mari kita mulai ritual instalnya. Silahkan klik 2x file instaler Git yang sudah
diunduh.
Maka akan muncul infomasi lisensi Git, klik Next > untuk melanjutkan.

Selanjutnya menentukan lokasi instalasi. Biarkan saja apa adanya, kemudian


klik Next >.
Selanjutnya pemilihan komoponen, biarkan saja seperti ini kemudian klik Next >.

Selanjutnya pemlilihan direktori start menu, klik Next >.


Selanjutnya pengaturan PATH Environment. Pilih yang tengah agar
perintah git dapat di kenali di Command Prompt (CMD). Setelah itu klik Next >.

Selanjutnya konversi line ending. Biarkan saja seperti ini, kemudian klik Next >.
Selanjutnya pemilihan emulator terminal. Pilih saja yang bawah, kemudian klik Next
>.

Selanjutnya pemilihan opsi ekstra. Klik saja Next >.


Selanjutnya pemilihan opsi ekspreimental, langsung saja klik Install untuk memaulai
instalasi.

Tunggu beberapa saat, instalasi sedang dilakukan.


Setelah selesai, kita bisa langsung klik Finish.

Selamat, Git sudah terinstal di Windows. Untuk mencobanya, silahkan buka CMD
atau PowerShell, kemudian ketik perintah git --version.
3. Konfigurasi Awal yang Harus Dilakukan
Ada beberapa konfigurasi yang harus dupersiapakan sebelum mulai menggunakan
Git, seperti name dan email.

Silahkan lakukan konfigurasi dengan perintah berikut ini.

git config --global user.name "Petani Kode"


git config --global user.email contoh@petanikode.com
Kemudian periksa konfigurasinya dengan perintah:

git config --list


Apabila berhasil tampil seperti gambar berikut ini, berarti konfigurasi berhasil.

Konfigurasi core.editor bersifat opsional. Sedangkan name dan email wajib.

Jika kamu memiliki akun Github, Gitlab, Bitbucket atau yang


lainnya…maka username dan email harus mengikuti akun tersebut agar mudah
diintegrasikan.

Apa Selanjutnya?
Bagus, kita sudah mempersiapkan semuanya. Selanjutnya kita bisa langsung
belajar membuat repositori git.
Tutorial Git #3: Simpan Perubahan
Revisi dengan Git Commit

#Git

Pada tutorial Git yang kedua, kita sudah membuat repositori kosong. Belum ada apa-
apa di sana.

Sekarang coba tambahkan sebuah file baru.

Sebagai contoh, saya akan menambahkan tiga file HTML kosong.

Setalah ditambahkan, coba ketik perintah git status untuk melihat status
repositorinya.
Berdasarkan keterangan di atas, saat ini kita berada cabang (branch) master dan ada
tiga file yang belum ditambahkan ke Git.

Tiga Kelompok Kondisi File dalam Git


Sebelum kita membuat revisi, kita akan berkenalan dulu dengan tiga kondisi file
dalam Git.

1. Modified
Modified adalah kondisi dimana revisi atau perubahan sudah dilakukan, tetapi
belum ditandai dan belum disimpan di version control. Contohnya pada gambar di
atas, ada tiga file HTML yang dalam kondisi modified.

2. Staged
Staged adalah kondisi dimana revisi sudah ditandai, tetapi belum disimpan
di version control. Untuk mengubah kondisi file dari modified ke staged gunakan
perintah git add nama_file. Contoh:

git add index.html


3. Commited
Commited adalah kondisi dimana revisi sudah disimpan di version control. perintah
untuk mengubah kondisi file dari staged ke commited adalah git commit.

Membuat Revisi Pertama


Baiklah, sekarang kita akan sudah tahu kondisi-kondisi file dalam Git. Selanjutnya,
silahkan ubah kondisi tiga file HTML tadi menjadi staged dengan perintah git add.
git add index.html
git add about.html
git add contact.html
Atau kita bisa melakukannya seperti ini:

git add index.html about.html contect.html


atau:

git add *.html


Atau seperti ini (semua file dan direktori):

git add .
Setelah itu, cobalah ketik perintah git status lagi. Kondisi filenya sekarang akan
menjadi staged.

Setelah itu, ubah kondisi file tersebut ke commited agar semua perubahan disimpan
oleh Git.

git commit -m "Commit pertama"


Setelah itu, coba cek dengan perintah git status lagi.
Selamat, revisi pertama sudah kita buat. Selanjutnya cobalah untuk membuat revisi
kedua.

Membuat Revisi kedua


Ceritanya ada perubahan yang akan kita lakukan pada file index.html. Silahkan
modifikasi isi file index.html. Sebagai contoh saya mengisinya seperti ini.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Belajar Git - Project 01</title>
</head>
<body>
<p>Hello Semua, Saya sedang belajar Git</p>
</body>
</html>
Setelah itu ketik lagi perintah git status.

Terilhat di sana, file index.html sudah dimodifikasi. Kondisinya skarang berada


dalam modified. Lakukan commit lagi seperti revisi pertama.
git add index.html
git commit -m "ditambahkan isi"
Dengan demikian, revisi kedua sudah disipan oleh Git. Mungkin anda belum tahu
maksud dari argumen -m, argumen tersebut untuk menambahkan pesan setiap
menyimpan revisi.

Sekarang Git sudah mencatat dua revisi yang sudah kita lakukan. Kita bisa ibaratkan
revisi-revisi ini sebagai checkpoint pada Game. Apabila nanti ada kesalahan, kita bisa
kembali ke checkpoint ini.
Tutorial Git #4: Melihat Catatan Log
Revisi

#Git

Pada tutorial sebelumnya, kita sudah membuat dua revisi pada repositori project-
01. Sekarang bagaimana caranya kita melihat catatan log dari revisi-reivisi tersebut?

Git sudah menyediakan perintah git log untuk melihat catatan log perubahan pada
respositori. Contoh penggunaannya:

git log
Maka kita akan melihat log perubahan apa saja yang sudah dilakukan dalam
repositori.

Pada gambar di atas, terdapat dua revisi perubahan yang telah dilakuan.

Log yang Lebih Pendek


Untuk menampilkan log yang lebih pendek, kita bisa menambahkan argumen --
oneline.

git log --oneline


Maka akan menghasilkan output:

06f735a ditambahkan isi


cf08ca0 commit pertama

Log pada Nomer Revisi/Commit


Untuk melihat log pada revisi tertentu, kita bisa memasukan nomer revisi/commit.

git log cf08ca0837cf26f1c595be36bb3a6b815e311be1


Maka akan menghasilkan output:

commit cf08ca0837cf26f1c595be36bb3a6b815e311be1
Author: Ardianta Pargo <ardianta_pargo@yahoo.co.id>
Date: Mon Feb 13 18:08:56 2017 +0800

commit pertama

Log pada File Tertentu


Untuk melihat revisi pada file tertentu, kita dapat memasukan nama filenya.

git log index.html


Maka akan menghasilkan output:

commit 06f735af7724558164c87f6b1ce3ca7778eb1c1b
Author: Ardianta Pargo <ardianta_pargo@yahoo.co.id>
Date: Mon Feb 13 18:26:50 2017 +0800

ditambahkan isi

commit cf08ca0837cf26f1c595be36bb3a6b815e311be1
Author: Ardianta Pargo <ardianta_pargo@yahoo.co.id>
Date: Mon Feb 13 18:08:56 2017 +0800

commit pertama
Karena file index.html sudah direvisi sebanyak dua kali.

Log Revisi yang dilakukan oleh Author Tertentu


Misalkan dalam repositori dikerjakan oleh banyak orang. Maka kita dapat melihat
revisi apa saja yang dilakukan oleh orang tertentu dengan perintah berikut.
git log --author='Petani Kode'

Penutup
Itulah beberapa cara melihat log revisi pada repositori. Perintah yang digunakan
adalah git log. Selanjutnya kita akan pelajari perintah git diff untuk melihat
perbandingan pada revisi.
Tutorial Git #5: Melihat Perbandingan
Revisi dengan Git Diff

#Git

Pada tutorial sebelumnya, kita sudah belajar cara melihat log revisi di repositori.
Sekarang kita kan peljari perintah git diff, fungsinya untuk melihat perbedaan
perubahan di revisi.

Melihat Perbandingan Perubahan yang Dilakukan


pada Revisi
Gunakan perintah berikut ini untuk melihat perubahan yang dilakukan pada revisi
tertentu.

git diff cf08ca0837cf26f1c595be36bb3a6b815e311be1


cf08ca0837cf26f1c595be36bb3a6b815e311be1 adalah nomer revisi yang ingin dilihat.

Lihatlah hasil di atas, simbol plus (+) artinya kode yang ditambahkan. Sedangkan
kalau ada kode yang dihapus simbolnya akan menggunakan minus (-).
Contoh:

Ditambahkan:

+ <p>ini kode yang ditambahkan</p>


Dihapus:

- <i>ini kode yang dihapus</i>


Dimodifikasi/diubah:

- <span>ini kode sebelum diubah</span>


+ <span>ini kode sesudah diubah</span>
Sekarang kita akan mencoba merubah isi dari index.html.

Sebelum diubah:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Belajar Git - Project 01</title>
</head>
<body>
<p>Hello Semua, Saya sedang belajar Git</p>
</body>
</html>
Setelah diubah:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Belajar Git - Project 01</title>
</head>
<body>
<p>Hello Dunia!, Saya sedang belajar Git</p>
</body>
</html>
Setelah itu lakukan jalankan perintah git diff lagi.
Apa yang dilakukan git diff? Perintah git diff akan membandingkan perubahan
yang baru saja dilakukan dengan revisi/commit terakhir.

Melihat Perbandingan pada File


Apa bila kita melakukan banyak perubahan, maka akan banyak sekali tampil output.
Karena itu, kita mungkin hanya perlu melihat perubahan untuk file tertentu saja.
Untuk melihat perbandingan perubahan pada file tertentu, gunakan perintah
berukut.

git diff index.html


Perintah di atas akan melihat pebedaan perubahan pada file index.html saja.

Melihat Perbandingan antar Revisi/Commit


Perintah untuk membandingkan perubahan pada revisi dengan revisi yang lain
adalah sebagai berikut.

git diff <nomer commit> <nomer commit>


contoh:

git diff cf08ca0837cf26f1c595be36bb3a6b815e311be1


06f735af7724558164c87f6b1ce3ca7778eb1c1b

Perbandingan Antar Cabang (Branch)


Kita memang belum masuk ke materi percabangan di Git. Tapi tidak ada salahnya
megetahui cara melihat perbandingan perubahan antar cabang.
git diff <nama cabang> <nama cabang>

Penutup
Kita sudah pelajari fungsi dari perintah git diff. Perintah ini untuk melihat
perbandingan perubahan apa saja yang telah dilakukan pada repositori. Selanjutnya,
kita akan belajar membatalkan revisi.
Tutorial Git #6: Perintah untuk
Membatalkan Revisi

#Git

Pada tutorial git 05, kita sudah belajar cara melihat perbedaan di setiap revisi.
Sekarang kita akan belajar, cara membatalkan sebuah revisi.

Terkadang pada perubahan yang kita lakukan terjadi kesalahan dan kita ingin
mengembalikannya seperti keadaan sebelumnya. Maka kita perlu menyuruh git
untuk megembalikannya. Ada beberapa perintah yang digunakan diantaranya: git
checkout, git reset, dan git revert.

Membatalkan Perubahan
Jika revisi kita belum staged ataupun committed, kita bisa mengembalikannya
menggunakan perintah git checkout nama_file.html.

Contoh: Misalkan kita akan merubah isi dari file index.html pada
repositori project-01.

Sebelum diubah:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Belajar Git - Project 01</title>
</head>
<body>
<p>Hello Dunia!, Saya sedang belajar Git</p>
</body>
</html>
Setelah diubah:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Belajar Git - Project 01</title>
</head>
<body>
<p>Hello Dunia!, Saya sudah belajar Git</p>
<p>Belajar git ternyata cukup menyenangkan</p>
</body>
</html>
Hasil git diff:

$ git diff
diff --git a/index.html b/index.html
index c5082e6..115efcb 100644
--- a/index.html
+++ b/index.html
@@ -5,6 +5,7 @@
<title>Belajar Git - Project 01</title>
</head>
<body>
- <p>Hello Dunia!, Saya sedang belajar Git</p>
+ <p>Hello Dunia!, Saya sudah belajar Git</p>
+ <p>Belajar git ternyata cukup menyenangkan</p>
</body>
</html>
Sekarang kita akan membatalkan perubahan tersebut. Karena kita belum
melakukan stage dan commit, maka kita bisa menggnakan perintah:

git checkout index.html


Perubahan yang baru saja kita lakukan akan dibatalkan. Kalau tidak percaya, coba
saja periksa file yang sudah dirubah tadi atau cek dengan perintah git status.

$ git status
On branch master
nothing to commit, working directory clean
Hati-hati! Terkadang perintah ini sangat berbahaya, karena akan menghapus
perubahan yang baru saja dilakukan.
Bila kita sudah merubah banyak hal, maka itu akan sia-sia setelah menjalankan
perintah ini.

Membatalkan Perubahan File yang Sudah dalam


Kondisi staged
Kondisi staged merupakan kondisi file yang sudah di add (git add), namun belum
disimpan (git commit) ke dalam Git.

Sebagai contoh, kita lakukan perubahan lagi di file index.html seperti pada contoh
sebelumnya.

$ git diff
diff --git a/index.html b/index.html
index c5082e6..c99aa5b 100644
--- a/index.html
+++ b/index.html
@@ -5,6 +5,7 @@
<title>Belajar Git - Project 01</title>
</head>
<body>
- <p>Hello Dunia!, Saya sedang belajar Git</p>
+ <p>Hello Dunia!, Saya sudah belajar Git</p>
+ <p>Belajar git ternyata gampang-gampang susah</p>
</body>
</html>
Setelah itu, kita ubah kondisi file menjadi staged dengan perintah:

git add index.html


Cek statunya dulu:

$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

modified: index.html
Nah, file index.html sudah masuk ke dalam kondisi staged. Untuk mengubahnya
menjadi kondisi modified, kita bisa menggunakan perintah git reset.
git reset index.html
Cek statusnya lagi:

$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: index.html

no changes added to commit (use "git add" and/or "git commit -a")
Sekarang file index.html sudah dalam kondisi modified, kita bisa membatalkan
perubahannya dengan perintah git checkout seperti contoh sebelumnya.

git checkout index.html


Maka perubahan yang kita lakukan akan dibatalkan, .

Membatalkan Perubahan File yang Sudah dalam


Kondisi Commited
Sekarang bagaimana kalau filenya sudah dalam kondisi commited dan kita ingin
mengembalikannya? Untuk melakukan ini, kita harus mengetahui nomer commit,
kemudian mengembalikan perubahannya seperti pada nomer commit tersebut.
Misalkan, kita ubah kembali file index.html.

$ git diff
diff --git a/index.html b/index.html
index c5082e6..3c150a8 100644
--- a/index.html
+++ b/index.html
@@ -5,6 +5,7 @@
<title>Belajar Git - Project 01</title>
</head>
<body>
- <p>Hello Dunia!, Saya sedang belajar Git</p>
+ <p>Hello Dunia!, Saya sudah belajar Git</p>
+ <p>Belajar Git Greget!</p>
</body>
</html>
Kemudian kita melakukan commit.

git add index.html


git commit -m "belajar git greget!"
Sekarang kita akan melihat nomer commit dengan perintah git log.
Kita akan mengembalikan kondisi file index.html, seperti pada commit sebelumnya.
Maka kita bisa menggunakan perintah:

git checkout b05f7d05c9298f2cd11b870369f3cf4b2350eca7 index.html


Seperti mesin waktu, kita sudah mengembalikan keadaan file index.html seperti
keadaan saat commit tersebut. Namun, saat ini kondisi index.html dalam
keadaan staged. Kita bisa kembalikan ke dalam kondisi modified dengan
perintah git reset.

git reset index.html


Pada contoh tersebut, kita sudah berhasil mengembalikan file index.html ke dalam
keadaan seperti commit sebelumnya.

Apabila kita ingin mengembalikan seluruh file dalam commit, kita cukup
melakukan checkout ke nomer commit saja, tanpa diikuti nama file. Contoh:

git checkout ac6d798f98bac5fad693ef8159f957c5b0805c23


Catatan: Perintah ini akan mengembalikan semua file dalam kondisi pada nomer
commit yang diberikan, namun bersifat temporer.

Kembali ke 3 Commit sebelumnya


Untuk kembali ke 3 commit sebelumnya, kita bisa menggunakan perintah berikut.

git checkout HEAD~3 index.html

Membatalkan Semua Perubahan yang ada


Jika kita ingin mengembalikan semua file ke suatu commit, kita bisa melakukannya
dengan perintah:

git revert -n <nomer commit>


Contoh:

git revert -n 2400ba0e258bd6a144caa273012b130d6baa5e42


Tutorial Git #7: Menggunakan
Percabangan untuk Mencegah Konflik

#Git

Bayangkan anda sedang bekerja dengan tim pada suatu repositori Git. Repositori ini
dikerjakan secara bersama-sama.

Kadang… akan terjadi konflik, karena kode yang kita tulis berbeda dengan yang lain.

Misalnya, Si A menulis kode untuk fitur X dengan algoritma yang ia ketahui.


Sedangkan si B menulis dengan algoritma yang berbeda.

Lalu mereka melakukan commit, dan kode sumber jadi berantakan. Anggota tim
yang lain menjadi pusing.

Agar tidak terjadi hal yang seperti ini, kita harus membuat
cabang (branch) tersendiri.
Misalnya, si A akan mengerjakan fitur X, maka dia harus membuat cabang sendiri. Si
A akan bebas melakukan apapun di cabangnya tanpa menggangu cabang
utama (master).

Cara Membuat Cabang Baru


Perintah untuk membuat cabang adalah git branch, kemudian diikuti dengan nama
cabangnya.

Contoh:

git branch fitur_register


Maka Git akan membuat cabang bernama fitur_register.

Sekarang setiap orang memiliki cabangnya masing-masing. Mereka bebas


bereksperimen.

Untuk melihat cabang apa saja yang ada di repositori, gunakan perintah git branch.

Contoh:

$ git branch
halaman_login
* master
Tanda bintang (*) artinya cabang yang sedang aktif atau Kita sedang berada di sana.
Latihan
Untuk memantapkan pemahaman tentang percabangan Git, mari kita coba praktik.

Pada repositori, buatlah sebuah cabang baru.

git branch halaman_login


Setelah itu, pindah ke cabang yang baru saja kita buat dengan perintah:

git checkout halaman_login


Lalu tambahkan file login.html, isinya terserah anda.

Tips: Jangan lupa untuk menggunakan printah git status untuk melihat status
repositori.
Kita sudah menambahkan file login.html. Selanjutnya kita lakukan commit.

git add login.html


git commit -m "membuat file login.html"
Bagus! revisi kita pada cabang halaman_login sudah disimpan. Sekarang coba
kembali ke cabang master.

git checkout master


Apakah anda menemukan file login.html?
Pasti tidak!

Sekarang kembali lagi ke cabang halaman_login.

git checkout halaman_login


Cek lagi, apakah sekarang file login.html sudah ada?

project-01/
├── index.html
└── login.html
Ternyata ada. Yep! kita bisa mengambil kesimpulan, kalau perubahan pada
cabang halaman_login tidak akan berpengaruh di cabang master.

Menggabungkan Cabang
Anggaplah kita sudah selesai membuat fitur login di cabang halaman_login.
Sekarang kita ingin Menggabungkannya denga cabang master (utama).

Pertama, kita harus pindah dulu ke cabang master.

git checkout master


Setelah itu, barulah kita bisa menggabungkan dengan perintah git merge.

git merge halaman_login


Sekarang lihat, file login.html sudah ada di cabang master.
Hati-hati! kadang sering terjadi bentrok ketika menggabungkan cabang.

Mengatasi Bentrok
Bentrok biasanya terjadi jika ada dua orang yang mengedit file yang sama.

Kenapa bisa begitu, ‘kan mereka sudah punya cabang masing-masing?

Bisa jadi, di cabang yang mereka kerjakan ada file yang sama dengan cabang lain.
Kemudian, saat digabungkan terjadi bentrok.

Mengatasi bentrok adalah tugas dari pemilik atau pengelola repostiri. Dia harus
bertindak adil, kode mana yang harus diambil.

Biasanya akan ada proses diskusi dulu dalam mengambil keputusan.

Baiklah, sekarang kita akan coba membuat bentrokan .

Pindah dulu ke branch halaman_login…

git checkout halaman_login


Setela itu, edit file login.html atau index.html, karena kedua file tersebut ada di
kedua cabang yang akan kita gabungkan.

$ git diff
diff --git a/login.html b/login.html
index 23a3f5c..eea5658 100644
--- a/login.html
+++ b/login.html
@@ -1 +1 @@
-di sini berisi kode untuk halaman login
+<p>di sini berisi kode untuk halaman login<p>
Setelah itu, lakukan commit lagi:

git add login.html


git commit -m "ubah isi login.html"
Selanjutnya pindah ke cabang master dan lakukan perubahan juga di cabang ini.
Ubah file yang sama seperti di cabang halaman_login.

Setelah itu, lakukan commit di cabang master

git add login.html


git commit -m "ubah isi login.html di cabang master"
Terakhir, coba gabungkan cabang halaman_login dengan cabang master, maka akan
terjadi bentrok.

$ git merge halaman_login


Auto-merging login.html
CONFLICT (content): Merge conflict in login.html
Automatic merge failed; fix conflicts and then commit the result.
Nah, kita disuruh perbaiki kode yang bentrok. Sekarang buka login.html dengan
teks editor.
Kedua kode cabang dipisahkan dengan tanda ======. Sekarang.. tugas kita adalah
memperbaikinya.

Silahkan eliminasi salah satu dari kode tersebut.

Setelah itu lakukan commit untuk menyimpan perubahan ini.

git add login.html


git commit -m "perbaiki konflik"
Bagus! bentrokan antar ormas programmer sudah beres .

Menghapus Cabang
Cabang yang sudah mati atau tidak ada pengembangan lagi, sebaiknya dihapus.

Agar repositori kita bersih dan rapi.

Cara menghapus cabang, gunakan perintah git branch dengan argumen -d dan
diikuti dengan nama cabangnya.

Contoh:

git branch -d halaman_login


Tutorial Git #8: Perbedaan Git checkout,
Git Reset, dan Git Revert
#Git

Pada tutorial ke-6, kita sudah mebahas cara membatalkan revisi menggunakan
perintah git checkout, git reset, dan git revert.

Sekilas, tiga perintah tersebut melakukan hal yang sama. Akan tetapi ada
perbedaanya.

Apa itu?

Mari kita bahas…

Git Checkout
Perintah git checkout seperti mesin waktu, kita bisa kembalikan kondisi file proyek
seperti waktu yang dituju.

Misalnya:

git checkout 06f735af7724558164c87f6b1ce3ca7778eb1c1b


Maka semua file akan dikembalikan seperti keadaan pada nomer commit tersebut.
Akan tetapi, ini bersifat temporer (sementara). Pengembalian ini tidak disimpan
dalam database Git.

Kita bisa sebut perintah git checkout sebagai perintah untuk mengecek kondisi file
di setiap commit.

Tips: Untuk kembali dari masa lalu gunakan perintah: git checkout master

Selain itu juga, perintah ini digunakan untuk berpindah dan membuat cabang. Ini
bisa kita gunakan untuk membuat perubahan baru berdasarkan kode di masa lalu.

Contoh:

Misalnya kita ingin membuat cabang baru berdasarkan kondisi kode di masa lalu,
maka kita bisa menggunakan perintah:

git checkout -b nama_cabang <nomer_commit>


Maka nanti cabang baru akan terbentuk dari commit sebelumnya.
Cara ini bisa kita ibaratkan seperti menulis cerita baru dengan plot yang berbeda.

Git Reset
Perintah git reset sering disebut sebagai perintah berbahaya yang dapat
menghancurkan catatan sejarah perubahan.

Hati-hati! Perintah ini membuat kita tidak bisa kembali lagi ke masa depan. Mau
tidak mau, kita harus menulis ulang sejarah.
Perintah ini memiliki tiga argumen atau opsi utama, yaitu --soft, --mixed, dan --
hard.

• --soft akan mengebalikan dengan kondisi file dalam keadaan staged


• --mixed akan mengebalikan dengan kondisi file dalam keadaan modified
• --hard akan mengebalikan dengan kondisi file dalam keadaan commited

Contoh penggunaan:

git reset --soft 06f735af7724558164c87f6b1ce3ca7778eb1c1b


Maka kita akan dikebalikan dengan file dalam keadaan staged.

Coba periksa catatan perubahan dengan perintah git log, pasti ada yang hilang dan
kita tidak akan bisa kembali lagi ke masa depan. Ini seperti melakukan Re:Zero .

Hati-hati! Jangan lakukan git reset pada repositori yang sudah di bagikan ke publik,
karena dapat merusaknya.

Git Revert
Revert artinya mengembalikan. Perintah ini lebih aman daripada git reset, karena
tidak akan menghapus catatan sejarah revisi.

Revert akan akan mengambil kondisi file yang ada di masa lalu, kemudian
menggabungkannya dengan commit terakhir.
Masih belum paham?

Mari kita coba lakukan sedikit eskperimen…

Sebelumnya, berikut ini adalah kondisi repositori yang dijadikan bahan percobaan.

Ada empat commit di sana, kemudian kita ingin melakukan revert ke commit ke-2.
Terjadi error, karena ada file yang bentrok.

Silahkan atasi konflik ini, setelah itu lakukan commit.

Nah, sekarang kita sudah punya lima catatan revisi/commit di dalam repositori.
Kesimpulan
• Perintah git checkout mengembalikan file dalam kondisi sebelumnya, tapi
bersifat sementara.
• Perintah git reset, akan mengembalikan file ke kondisi sebelumnya,
kemudian menghapus catatan sejarah commit beikutnya.
• Perintah git revert mengembalikan file dengan tidak menghapus sejarah
commit.

Kira-kira seperti itulah perbedaan perintah git checkout, git reset, dan git
revert.

Referensi:

• http://stackoverflow.com/a/4114122
• https://www.atlassian.com/git/tutorials/undoing-changes
Tutorial Git #9: Bekerja dengan Remote
Repositori

#Git

Pada proyek pengembangan software yang melibatkan banyak orang (tim), kita
tidak hanya akan menyimpan sendiri repository proyeknya.

Semua tim yang terlibat dalam pengkodean (coding) akan menyimpan repository
lokal di komputernya masing-masing.

Setelah itu, akan dilakukan penggabungan ke repository inti atau remote.

Biasanya akan ada repository pusat atau untuk menyimpan source code yang sudah
digabungkan (merge) dari beberapa orang.

Di mana nyimpan repository remote-nya?

Bisa di server kantor atau bisa juga menggunakan layanan seperti Github, Gitlab,
Bitbucket, dll.
Github adalah layanan yang paling populer untuk menyimpan (hosting) repository
secara remote. Banyak proyek open source tersimpan di sana.

Kita akan menggunakan Github pada tutorial ini, pastikan kamu sudah memiliki
akun Github.

Membuat Repository di Github


Silahkan buka Github, kemudian buat sebuah repository dengan nama belajar-
git seperti berikut ini.

Maka sekarang kita punya repository kosong di Github.


Jangan diapa-apakan dulu.

Silahkan buka kembali repository lokal yang pernah kita buat, yaitu project-01.

Kita akan upload ke Github.

Menambahkan dan Menghapus Remote


Sebelum kita bisa upload semua revisi yang ada di repository lokal, kita harus
menambahkan remote-nya terlebih dahulu.

Remote dapat kita tambahkan dengan perintah seperti ini:

Ada dua pilihan URL remote yang bisa kita berikan:

Melalui HTTPS:

https://github.com/petanikode/belajar-git.git
dan melalui SSH:

git@github.com:petanikode/belajar-git.git
Apa bedanya?
Kalau kita menggunakan HTTPS, maka kita akan diminta password setiap kali
melakukan push.

Sedangkan yang menggunakan SSH, kita tidak akan diminta password. Namun,
kita harus melakukan konfigurasi SSH Key terlebih dahulu.

Saya lebih suka yang menggunakan SSH.

Maka perintah untuk menambahkan remotenya akan menjadi seperti ini:

git remote add github git@github.com:petanikode/belajar-git.git


Setelah itu, silahkan ketik perintah git remote -v untuk melihat remote apa saja
yang sudah ditambahkan.

Bagus, sekarang kita sudah menambahkan remote di dalam repository lokal.

Selanjutnya kita bisa melakukan push atau mengirim revisi ke repository remote
(Github).

Nah untuk menghapus dan mengubah nama remote dapat dilakukan dengan
perintah berikut:

Ubah nama remote:

git remote rename github kantor


Keterangan:

• github adalah nama lama


• kantor adalah nama baru

Hapus remote:
git remote remove github
keterangan:

• github adalah nama remote yang akan dihapus.

Mengirim Revisi ke Remote Repository


Perintah yang kita gunakan untuk mengirim revisi ke repository remote adalah git
push.

git push github master


Keterangan:

• github adalah nama remote.


• master adalah nama cabang tujuan.

Mari kita coba…

Pastikan repository lokal kita sudah memiliki remote.

Setelah itu lakukan beberpa revisi atau commit.

git add .
git commit -m "menambahkan beberapa revisi"
Sebagai contoh, saya memiliki 5 catatan revisi.
Maka tinggal kita kirim saja dengan perintah git push github master.

Jika muncul seperti ini, artinya push sukses dilakukan.

Sekarang lihat ke Github, pasti semuanya sudah ter-upload ke sana.


Mudah bukan?

Biar mantap, coba buat revisi lagi di file index.html.

Misalnya perubahannya seperti ini:

Lalu lakukan commit dan push.

git add index.html


git commit -m "mengubah judul dan teks di body"
git push github master
Jika berhasil, maka akan tampil seperti ini.
Periksa kembali repository di Github dan perhatikanlah perubahanya.

Jika ktia klik commit terakhir, maka kita akan dibawa ke git diff-nya Github.

Di sana kita bisa melihat perubahan apa saya yang dilakukan


pada commit tersebut.

Mengambil Revisi dari Remote Repository


Saat kita bekerja dengan repository yang memiliki banyak kontributor, kita
seharusnya mengambil dulu revisi terbaru dari repository inti agar tidak bentrok.

Misalnya begini.
Pada repository remote ada kontributor lain yang sudah menambahkan dan
merubah sesuatu di sana.

Maka kita harus mengambil perubahan tersebut, agar repository lokal kita tetap
ter-update atau sama persis seperti repository remote.

Ada dua perintah untuk mengambil revisi dari repository remote:

1. git fetch [nama remote] [nama cabang]


2. git pull [nama remote] [nama cabang]

Apa perbedaanya?

Perintah git fetch hanya akan mengambil revisi (commit) saja dan tidak langsung
melakukan penggabungan (merge) terhadap repository lokal.

Sedangkan git pull akan mengambil revisi (commit) dan langsung melakukan
penggabungan (merge) terhadap repository lokal.

Terus kita harus pakai yang mana?

Tergantung dari situasi dan kondisi.

Bila kita sudah membuat perubahan di repository lokal, maka sebaiknya


menggunakan git fetch agar perubahan yang kita lakukan tidak hilang.
Namun, bila kita tidak pernah melakukan perubahan apapun dan ingin mengambil
versi terakhir dari repository remote, maka gunakanlah git pull.

Mengambil Revisi dengan git fetch


Baiklah, sekarang mari kita coba praktekkan.

Silahkan buka github, dan tambahkan file README.md melalui Github.

Klik tombol add README.

Setelah itu, isilah file RAEDME.md dengan apapun yang kamu inginkan.

Sebagai contoh, saya mengisinya seperti ini:


Setelah selesai, simpan perubahan dengan melakukan commit langsung dari
Github.

Pesan commit bersifat opsional, boleh di isi boleh tidak. Karena Github akan
membuatkannya secara otomatis.

Sekarang ada perubahan baru di repository remote dan kita akan mengambil
perubahan tersebut.

Mari kita lakukan dengan perintah git fetch.

Revisi sudah diambil, tapi belum ada file README.md di dalam repository lokal.

Kenapa bisa begitu?

Ya, balik lagi dari pengertian git fetch. Dia hanya bertugas mengambil revisi saja
dan tidak langsung menggabungkannya dengan repository lokal.

Coba kita cek dengan git log.


Pada gambar di atas terlihat perbedaan log antara repository lokal dengan
repository remote.

Bila ingin mengecek apa saja perbedaannya, coba gunakan perintah git diff.

git diff master github/master


Keterangan:

• master adalah cabang master di repository lokal.


• github/master adalah cabang master di repository remote.

Hasil outputnya kira-kira akan seperti ini:

diff --git a/README.md b/README.md


new file mode 100644
index 0000000..1174eb2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# belajar-git
+
+Repository ini adalah repository untuk belajar Git. Silahkan baca materi
tentang [git remote di Petani Kode](https://www.petanikode.com/git-
remote).
+
+Atau mulai belajar Git dari awal:
+
+- [Tutorial Git 01 - Instalasi Git dan Perisiapan
Awal](https://www.petanikode.com/git-install/)
+- [Tutorial Git 02 - Membuat Repositori
Git](https://www.petanikode.com/git-init/)
+- [Tutorial Git 03 - Membuat Revisi](https://www.petanikode.com/git-
commit/)
+- [Tutorial Git 04 - Melihat Catatan Log Revisi
Git](https://www.petanikode.com/git-log/)
+- [Tutorial Git 05 - Melihat Perbandingan Revisi
Git](https://www.petanikode.com/git-diff/)
+- [Tutorial Git 06 - Membatalkan Revisi
Git](https://www.petanikode.com/git-membatalkan-revisi/)
+- [Tutorial Git 07 - Percabangan](https://www.petanikode.com/git-
branch/)
+- [Tutorial Git 08 - Perbedaan Git Checkout, Git Reset, dan Git
Revert](https://www.petanikode.com/git-checkout-reset-revert/)
+- Tutorial Git 09 - Menulis Ulang Sejarah
+- [Tutorial Git 10 - Bekerja dengan Remote
Repositori](https://www.petanikode.com/git-remote/)
+- Tutorial Git 11 - Git Tag
+- ...
Lalu sekarang bagaimana cara kita menggabungkan commit dari repository remote
dengan lokal?

Gunakan perintah git merge.

git merge master github/master


Setelah itu coba ketik ls dan git log lagi…
Kita sudah berhasil menggabungkan revisi dari remote dan lokal.

Mengambil Revisi dengan git pull


Lakukan hal yang sama seperti tadi.

Kali ini kita akan membuat file baru bernama register.html melalui Github.

Berikan nama file dengan register.html dan isi dengan apa saja.
Simpan revisi dan tambahkan persan commit seperti ini.

Sekarang ada perubahan baru di repository remote dan kita akan mengambilnya
dengan perintah git pull.

Silahkan buka repository lokal dan ketik perintah berikut:

git pull github master


Maka semua revisi akan diambil dan langsung digabungkan (merge).
Clone Remote Repository
Clone repository bisa kita bilang seperti copy repository dari remote ke lokal.

Perintah untuk melakukan clone adalah git clone.

git clone https://github.com/petanikode/belajar-git.git [nama dir]


Keterangan:

• https://... adalah URL repository remote, kita juga bisa menggunakan SSH.
• [nama dir] (opsional) adalah nama direktory yang akan dibuat. Jika kita tidak
berikan nama direktori, maka akan otomatis menggunakan nama repository.

Mari kita coba…

Sekarang saya akan pindah ke Desktop.

cd ~/Desktop
Setelah itu melakukan clone di sana.

git clone git@github.com:petanikode/belajar-git.git


Maka akan ada direktori baru di sana.

FYI: Saat kalian clone sebuah repository dari Github, nama remote origin akan diberikan
secara otomatis

Apa Selanjutnya?
Kita sudah belajar beberapa perintah untuk bekerja pada remote repository,
diantaranya git remote, git fetch, git pull, git clone, dll.

Semua perintah itu kita perlukan saat berkolaborasi dengan tim di proyek open
source maupun closed source.

Apa selanjutnya?

Selanjutnya silahkan banyak-banyak latihan dan sering-sering menggunakannya


tiap hari agar terbiasa.
[Studi Kasus] Kapan Waktu yang Tepat
Menggunakan git pull dan git fetch?

#Git #Github

Perintah git pull dan git fetch adalah dua perintah untuk mengambil commit
terbaru dari remote repository.

Pertanyaanya:

Apa perbedaan dari kedua perintah tersebut?

…dan kapan waktu yang tepat menggunakan git pull dan git fetch?

Mari kita bahas.

Apa Perbedaan git pull dengan git fetch?


Sebelum menjawab pertanyaan “kapan waktu yang tepat menggunakan git
pull dan git fetch?” kita bahas dulu perbedaanya.

Perintah git pull dan git fetch fungsinya sama. Yaitu mengambil commit terbaru
dari remote repository.
Fungsi perintah git pull dan git fecth

Tapi ada perbedaanya:

• Perintah git pull akan mengambil commit terbaru lalu otomatis


menggabungkan (merge) dengan branch yang aktif.
• Sedangkan git fetch akan mengambil commit saja. Perintah git fetch tidak akan
langsung melakukan merge.

Cara Menggunakan git pull dan git fetch


Perintah git pull dan git fetch dapat kita gunakan seperti ini:

git pull origin master


git fetch origin master
Artinya kita akan mengambil commit dari branch master pada repository
remote. origin adalah nama remote-nya.

Untuk penjelasan yang lebih detail, kita bisa membaca di dokumentasi dengan
mengetik perintah git pull --help atau git fetch --help.
Gampang kan?

Kapan Waktu yang Tepat Menggunakan git pull dan


git fetch?
Apabila kita sudah melakukan commit di repository lokal, maka yang kita gunakan
adalah git fetch.

Menggunakan Git Fetch


Kenapa menggunakan git fetch?

Karena untuk mencegah terjadinya bentrok.

Perintah git fetch akan mengambil commit terbaru dan menyimpannya di


branch origin/master.

Sedangkan apabila kita tidak pernah melakukan apa-apa di lokal repository, kita bisa
menggunakan git pull.

Menggunakan Git Fetch

Perintah git pull akan mengambil commit terbaru ke branch origin/master dan
langsung menggabungkannya dengan branch master (lokal).

Studi Kasus Penggunaan git pull dan git fetch


Untuk mencoba penggunaan git pull dan git fetch kita akan menggunakan
repository belajar-git yang sudah dibuat di Github.
Repositori di Github

Saat ini sudah terdapat 14 kontributor di dalam repositori tersebut. Sedangkan pada
repositori lokal, saya belum melakukan apa pun.

Ini perbedaan commit repo lokal dengan remote:

Perbedaan commit di repo remote dengan lokal

Pada repository remote sudah terjadi 48 commit, sedangkan pada lokal hanya 10
saja.

Sekarang saya akan melakukan sebuah commit di repository lokal. Saya akan
mengubah file README.md menjadi seperti ini:
Jadi sekarang di repositori lokal ada 11 commit.

Lalu perintah yang mana yang harus kita gunakan untuk mengambil 48 commit di
Github?

Tentu saja kita akan menggunakan git fetch, karena saya sudah melakukan
perubahan di repo lokal.

git fetch origin master


Hasil fetch akan disimpan dalam branch origin/master.
Kita bisa masuk ke branch origin/master dengan perintah git checkout:

git checkout origin/master


Lalu kita bisa lihat commit apa saja yang ada di sana dengan git log:
Ada dua branch dalam log tersebut:

1. master adalah branch master di lokal


2. origin/master adalah branch master di remote yang sudah kita fetch.

Apabila kita sudah yakin, kita bisa menggabungkan (merge) dua branch tersebut.

Caranya:

# pindah dulu ke branch master (lokal)


git checkout master
# merge branch
git merge master origin/master

Menggabungkan branch master dengan origin/master

Berhasil …

Coba lihat hasilnya dengan git log:


Lalu Bagaimana Penggunaan Git Pull?
Perintah git pull digunakan saat kita tidak pernah melakukan commit apapun di
repo lokal.

Cara kerja git pull:

1. Ambil semua commit dari repo remote


2. Gabungkan branch master (lokal) dengan origin/master (remote)
3. Selesai

Untuk mencoba git pull, saya akan mengubah file README.md dari Github.
Artinya sekarang di repositori remote (Github) ada 1 commit baru.

Bagaimana cara mengambilnya dengan git pull?

Caranya:

Gunakan perintah ini.

git pull origin master


Maka semua commit terbaru dari branch origin/master di Github akan diambil ke
lokal dan langsung digabungkan dengan branch master.

Mengunakan perintah git pull


Mudah bukan…

Jadi, Kesimpulannya
Gunakan perintah git pull saat tidak ada commit yang pernah dilakukan di lokal.
Sedangkan perintah git fetch digunakan kalau sudah ada commit yang dilakukan.

Penggunaan git fetch lebih aman, karena kita akan melakukan merge branch
secara manual. Sehingga kita bisa terhindar dari bentrokan.

Perintah git pull biasanya digunakan untuk sync repo lokal dengan remote.

Jika kamu menggunakan vs Code, pada pojok kanan bawah ada ikon
untuk sync repo. Ini juga mungkin saja menggunakan git pull.

Silahkan baca: Cara Menggunakan Git pada Visual Studio Code

Anda mungkin juga menyukai