Mengenal Git

Apa itu Git?

Git adalah salah satu dari VCS (Version Control System) yang dikembangkan oleh Linus Torvalds bersifat gratis dan open source.




Apa itu VCS?

VCS (Version Control System) adalah sebuah sistem yang mencatat setiap perubahan terhadap sebuah berkas atau kumpulan berkas sehingga pada suatu saat anda dapat kembali kepada salah satu versi dari berkas tersebut.

Bagaimana menginstal Git?


Setelah anda berhasil menginstal git, ketik pada terminal / command prompt atau git bash anda.

git --version

Perintah tersebut di atas untuk mengecek version git yang kita instal sekaligus apakah git berhasil diinstal atau tidak.

Memulai git

Kita akan memahami git dengan mempelajari bagaimana menggunakannya. Saya akan buat satu folder khusus yang bernama belajargit dimana di dalam folder tersebut akan berisi berkas-berkas yang akan saya tracking dengan git sehingga setiap perubahan apapun terhadap berkas tersebut akan tercatat dan dapat saya ketahui. Saya juga bisa mengembalikan keadaan berkas tersebut pada keadaan tertentu sesuai dengan commit yang saya buat. Saya akan lebih banyak menggunakan Git Bash sebagai console terminal saya untuk menulis perintah git.

Membuat file baru

Buka aplikasi Git Bash anda, arahkan path ke lokasi folder belajargit, cara mudah untuk pengguna Windows, klik folder belajargit, tekan shift kemudian klik kanan, dari menu yang muncul pilih Git Bash Here sehingga nanti muncul jendela Git Bash.

Configurasi Identitas Kita perlu membuat identitas pengguna berupa nama user dan email. Identitas ini penting agar git dapat menyimpan informasi tersebut dan menyertakannya di dalam log. Identitas ini bisa dibuat global, artinya menyeluruh untuk semua repositori yang kita buat. Jika kita hanya ingin identitas tertentu untuk repositori tertentu, kita bisa menggunakan identitas lokal.

Bagaimana membuat config identitas global ?


git config --global user.name "Your Name" 
git config --global user.email "yourname@email.com"

Bagaimana jika ingin membuat identitas lokal ? hilangkan opsi --global, sehingga menjadi :

git config --global user.name "Your Name"
git config --global user.email "yourname@email.com"

Configurasi Message Editor Secara default git membuka Message Editor-nya menggunakan Vi. Kita bisa mengubah defaultnya ke text editor lain, seperti: Atom, Sublime Text, Notepad++, dll. Bagaimana caranya ?

Saya akan memberi contoh mengatur default git message editor ke Sublime Text sehingga akan lebih mudah digunakan daripada menggunakan Vi, gunakan perintah berikut :

git config --global core.editor "'c:/program files/sublime text 3/subl.exe' -w"

Jika anda adalah pengguna Mac atau Linux, bisa menggunakan perintah :

git config --global core.editor "subl -n -w"

lihat di sini https://stackoverflow.com/questions/8951275/how-can-i-make-sublime-text-the-default-editor-for-git

Inisiasi git

Lakukan inisiasi git pada folder belajargit dengan perintah:

git init

Kemudian kita buat file baru, kita bisa membuat file baru dengan menggunakan perintah touch nama_file jika ingin membuat file baru, atau menggunakan perintah
echo "isi_file" >> nama_file
jika ingin membuat file sekaligus memberikan isi pada file tersebut.

Kita buat saja file baru bernama index.html dengan perintah seperti berikut:

touch index.html

Nanti akan muncul file index.html. Kemudian, bukalah file tersebut dengan menggunakan text editor. Salin isian berikut kedalam file index.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>

</body>
</html>

Sekarang lakukan perintah berikut untuk mengecek status:

git status

Apa yang anda lihat ? ya index.html dengan warna merah. Keterangan di atasnya “Untracked files”. Anda tahu apa artinya ? artinya file index.html tersebut berada di luar kontrol git atau berada di luar Staging area. Logikanya jika masih berada di luar dari Staging area, maka file tersebut tidak bisa dikontrol, dimonitoring, atau di-tracking oleh git.

Agar file index.html tersebut dapat di traked oleh git, maka yang harus dilakukan adalah memasukkannya ke dalam Staging area. Caranya dengan menjalankan perintah berikut :

git add index.html

atau dengan menggunakan perintah :

git add .

Bedanya apa ? bedanya kalau menggunakan tanda titik artinya semua file yang berstatus sebagai Untracked file akan dimasukkan ke dalam Staging area. Menggunakan tanda titik juga lebih mudah dilakukan karena lebih cepat tanpa perlu mengetik nama file-nya yang pasti akan sangat merepotkan jika nama file-nya panjang.

Sekarang kalau anda menjalankan git status, hasilnya nama file index.html berwarna hijau, artinya sudah di dalam staging area atau berstatus Staged file. Kalau anda ingin mengeluarkan kembali index.html ke dalam status Untracked file, anda bisa memberi perintah :

git rm --cached index.html

Atau dengan menggunakan perintah :

git reset HEAD

Apa itu HEAD ?

HEAD adalah kepala pointer atau referensi yang merujuk pada commit terakhir, atau dalam bahasa lain, HEAD adalah head, dimana pengertian head adalah ujung branch - commit terbaru dalam branch, branch adalah serangkaian commit yang saling runut dan terkait, dimana satu repository memiliki banyak branch, akan tetapi hanya satu branch yang aktif, dan branch yang aktif inilah yang disebut HEAD.

Bingung ? baca saja pelan-pelan dan coba resapi.

Ada kasus dimana kita ingin menghapus file yang mungkin saja tanpa sengaja kita bikin, lalu kita ingin menghapusnya atau mengeluarkannya dari Untracked file, caranya adalah dengan menggunakan perintah:

git clean -f

Atau jika ingin melihat file apa saja yang akan di hapus, gunakan perintah:

git clean -n

Apa langkah berikutnya setelah kita memasukkan file index.html ke dalam Staging area ? kita harus melakukan commit.

Apa itu commit ?

Commit adalah kondisi atau potret working directory (yaitu keseluruhan file dan folder di dalam belajargit) pada satu waktu (snapshot) yang direkam dalam histori dimana semua histori atau riwayat perubahan disimpan dalam database dan database itulah yang disebut dengan repository. Commit juga bisa berarti proses penyimpanan snapshot ke repository. Snapshot (commit) terbaru yang sudah direkam dalam histori disebut HEAD commit.

Anda sudah mengerti apa itu Commit ? gampangnya, commit itu status terbaru yang menggambarkan keadaan file dan folder dalam belajargit. Jadi saya punya file baru namanya index.html, maka si file baru ini setelah saya masukkan ke dalam staging area sehingga bisa di traking sama git, maka saya kemudian menyimpan status terbarunya bahwa ada file baru di dalam working directory namanya index.html yang saya masukkan ke staging area pada tanggal sekian, bulan sekian, tahun sekian, jam sekian, keadaan file index.html-nya bentuknya seperti ini, dan lain-lain. Itulah commit..

Bagaimana cara melakukan commit ? Caranya gampang, anda cukup memberi perintah :

git commit -m "Add index.html"

Kasih perintah git commit disusul dengan opsi -m dan nama commit-nya apa (keterangan/pesan commit), misal Add index.html. Pada saat memasukkan file index.html ke Staging area dengan perintah git add kita akan melihat informasi new file: index.html. Kita bisa mengikuti informasi itu sebagai nama commit, tapi seterah anda sebenarnya mau menuliskannya seperti apa, berilah nama yang jelas pada saat melakukan commit jadi berilah nama commit yang singkat dan informatif.

Setelah commit, anda bisa cek commit atau melihat commit dengan perintah:

git log

Anda akan melihat informasi commit seperti nomor commit (ID commit), Author, Date, dan pesan/nama/keterangan commit-nya. Kalau hanya ingin lihat hanya nomor dan pesan commit supaya lebih simpel dan sedap dipandang, perintahnya:

git log --oneline

Satu hal lagi, dalam git ada perintah git diff. Perintah ini akan menge-track kondisi isi file jika ada perubahan file, misalkan menambahkan <h1>Hello World</h1> di dalam body, kemudian anda simpan. Anda bisa melihat apa yang berubah dari isi file tersebut. Akan muncul tampilan isi file index.html dengan tanda plus hijau dan minus merah, itulah tanda penambahan atau pengurangan isi. Namun, git diff berlaku jika anda belum menambahkannya ke Staging are (belum diberi perintah git add).

Setelah kita melakukan commit, bagaimana kalau kita ingin membatalkan commit kita ?

Kita tidak bisa membatalkan commit yang sudah kita lakukan, tapi kita bisa memperbaiki nama commit-nya. Caranya ?

git commit --amend

Perintah ini akan membuka teks editor default secara otomatis, dalam hal ini saya menggunakan Sublime Text. Pada baris pertama setelah teks editor terbuka menunjukkan nama commit kita, ubah saja nama commit tersebut, kemudian simpan.

Selesai, jadi kalau kita cek dengan git log atau git log --oneline nama commit kita telah berubah.

Bagaimana kita mengembalikan isi file index.html yang sudah mengalami perubahan seperti semula sebelum kita memodifikasinya ? Begini, misalkan kita mengubah index.html dengan membuat h1, h2, dan h3, dan karena hasilnya kurang memuaskan kita ingin mengembalikan keadaan file seperti semula sebelum kita mengubahnya h1, h2, dan h3. Caranya :

git checkout index.html

Perintah ini hanya berjalan jika file belum anda masukkan ke dalam staging area atau belum anda lakukan git add. Jika anda terlanjur melakukan git add ., keluarkan kembali (Unstaging) dengan perintah git reset HEAD. setelah itu baru menjalankan perintah git checkout index.html

Bagaimana kita mengembalikan isi index.html ke commit tertentu ? Misalkan ketika kita menjalankan perintah:

git log --oneline

Menampilkan output :

a6c346f Menambahkan H1
fef32f5 New File index.html

Kita ingin mengembalikan index.html pada commit “New File index.html” atau dengan commit ID fef32f5.

Ternyata caranya gampang, ketik perintah berikut :

git checkout fef32f5 -- index.html

Maka file akan kembali seperti keadaan saat commit “New File index.html”.

Bagaimana kita mengembalikkan commit tertentu dan menghapus semua commit sesudahnya ? Misalkan ketika output log kita seperti berikut:

a6c346f Menambahkan H1
fef32f5 New File index.html

Kita ingin kembali ke commit “New File index.html” dan menghapus commit “Menambahkan H1” sehingga commit terakhir kita yang muncul di log adalah “New File index.html”.

Caranya kita menggunakan git reset :

git reset --mixed fef32f5

Peintah ini ketika dijalankan maka akan mengubah commit “New File index.html” sebagai commit terakhir, sementara commit “Menambahkan H1” akan terhapus dari log. Menariknya, meskipun commit di log berubah tapi tidak mengubah keadaan Working directory, isi file index.html masih sama persis seperti saat terakhir perubahan dilakukan.

Jika anda ingin mengubah ke commit tertentu sekaligus dengan isi file-nya, gunakan perintah :

git reset --hard fef32f5

Perintah ini akan mengubah isi file index.html seperti pada saat commit “New File index.html” dan akan menghapus semua commit setelahnya.

Branch

Apa itu branch ? secara harfiah branch adalah “cabang”. Branch secara definisi adalah serangkaian commit yang berkaitan sehingga kalau digambar seperti garis lurus berisi banyak commit. Setiap repository bisa memiliki banyak branch, namun hanya ada satu branch yang aktif. Branch yang aktif secara default yaitu branch master. Jadi ketika pertama kali kita membuat git, kita menggunakan branch master. Kita bisa menambah branch pada repository kita, dan masing-masing branch punya data commit masing-masing, hanya saja saat kita membuat branch baru, semua commit dari branch master akan ikut ke branch baru. Kemudian jika branch tersebut menambahkan commit baru, maka commit baru tersebut hanya ada di branch baru, tidak akan ada di commit branch master begitu pun sebaliknya karena sudah terpisah antara branch master dan branch baru.

Ada apa dengan branch ? kenapa menggunakan branch ?


Branch membantu para developer untuk fokus ke tugas masing-masing jika bekerja secara teamwork, misalkan ada fitur baru yang akan dikembangkan lalu diserahkan pada programmer C, maka programmer utama akan membuatkan branch baru yang disediakan khusus untuk programmer C tersebut. Pengembangan dan perbaikan fitur baru dalam branch tersebut juga akan mudah dilakukan karena memiliki riwayat commit dari awal saat fitur itu mulai dibuat. Bayangkan jika fitur itu tetap menggunakan branch master, maka akan tercampur dengan riwayat commit dari yang lain-lain, tentu ini merepotkan dan harus menelusuri satu per satu commit jika ingin ada perbaikan sehingga akan mengganggu proses pengerjaan secara keseluruhan.

Apakah anda sudah mengerti tentang branch ? Sekarang kita lanjut, bagaimana membuat branch baru. Branch dapat kita buat dengan perintah

git branch nama_branch

Misal nama branch yang akan kita buat adalah branch halaman_about, maka perintahnya menjadi :

git branch halaman_about

Sekarang, kita bisa cek branch yang barusan kita buat, perintahnya :

git branch

Oke, sekarang kita sudah punya dua branch di repositori kita:

halaman_about
* master

Perhatikan, branch master berwarna hijau diawali dengan asterisk(*), artinya apa ? Artinya, menunjukkan posisi kita saat ini sedang berada di dalam branch master. Kalau kita ingin berpindah ke branch halaman_about, perintahnya adalah checkout:

git checkout halaman_about

Sekarang kita sudah berada di branch halaman_about, enaknya kalau kita pakai Git Bash kita bisa mengetahui apakah kita berada di branch master atau di branch yang lain

yourname@DESKTOP-xxx MINGW64 /c/xampp/htdocs/belajargit (halaman_about)

Git Bash akan menunjukkan nama branch yang sedang aktif seperti yang terlihat di atas, yaitu branch halaman_about.

Sekarang kita cek log-nya dengan perintah git log --oneline. Apa yang tampil ? ya semua commit branch master juga ikut terbawa ke branch halaman_about, ini seperti kita meng-clone branch master untuk membuat branch halaman_about.

Kemudian kita akan coba menambahkan file di branch halaman_about, buat saja nama filenya: about.html.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <h1>About</h1>
  <p>Hi, My Name is Linus Torvalds.</p>
</body>
</html>

Lakukan perintah berikut ini :

git add about.html
git commit -m "Menambahkan file about.html"

Setelah itu cek log-nya :

git log --oneline

Oke, sekarang kita sudah punya commit terbaru di branch master, dan kita juga punya file baru about.html.

Lalu apa yang terjadi dengan branch master ?

Sekarang, kita akan cek kondisi terkini di branch master.

git checkout master

Apa yang terjadi ? file about.html hilang!

Sekarang cek log-nya.

git log --oneline

Ya, tidak ada commit untuk about.html di log-nya, artinya di branch master ‘tidak tahu apa-apa’ tentang adanya penambahan file baru di repositori-nya. File about.html hanya ada di branch halaman_about, branch master tidak tahu menahu. Split ini Awesome!

Lalu, bagaimana caranya supaya file about.html di branch halaman_about juga tampil di branch master ?

Kita harus melakukan perintah merge :

git merge halaman_about

Ingat perintah ini harus dilakukan di branch master.

Setelah kita memberi perintah merge hasilnya file about.html tiba-tiba muncul entah darimana, dan tahu-tahu ketika kita memberi perintah git log --oneline muncul commit log baru yang memberi kita informasi kalau ada penambahan file about.html. Ya, semua ini datangnya dari branch halaman_about.

Lalu bagaimana nasib branch halaman_about paska perintah merge dijalankan ?

git branch

Branch halaman_about baik-baik saja, tidak terpengaruh dengan proses merge.

Mengubah Nama Branch

Bagaimana mengubah nama branch ? Misalkan kita sudah punya nama branch profile dan kita ingin mengubah namanya menjadi halaman_profile. Bagaimana cara mengubahnya ?

Ikuti perintah berikut :

git branch -m profile halaman_profile

Menghapus Branch

Bagaimana menghapus branch ? Misalkan ada branch yang sudah tidak diperlukan lagi, bagaimana cara menghapusnya ?

Ikuti perintah berikut:

git branch -D halaman_admin