Belajar Perintah Dasar Git sebagai Version Control System dan Cara Hosting Repository di Github
Bagi anda developer, menguasai Git merupakan sebuah kewajiban jika anda mengerjakan project dengan kerjasama tim, akan sangat susah mendeteksi perubahan/penambahan fitur dalam project yang dikerjakan beramai-ramai tanpa bantuan Version Control System (VCS) seperti Git misalnya. untuk installasi pada laptop sudah dibahas pada artikel Persiapan Konfigurasi Environment di Linux Untuk Developer Website. pada artikel ini kita akan mencoba menggunakan perintah-perintah dasar git.
Konfigurasi Git
Untuk langkah awal, jalankan perintah untuk konfigurasi git berikut ini :
#cek versi git
git --version
#tambahkan config global untuk username dan email
git config --global user.name "username-anda"
git config --global user.email email-anda@gmail.com
#cek list config
git config --list
#output
user.email=email-anda@gmail.com
user.name=username-anda
(END)
Membuat Repository Local
jika sudah menambahkan config, saatnya kita membuat repository local, lakukan perintah berikut pada command line anda.
#membuat repository "belajar-git"
git init belajar-git
#output
Initialized empty Git repository in /home/naja/MyData/NajaProject/belajar-git/.git
#pindah direktori
cd belajar-git
#buat .gitignore file untuk list file yang diabaikan
nano .gitignore
#contoh isi, kemudian simpan
/vendor/
/upload/
/cache
#cek status git dengan perintah
git status
#output
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
Nah kita sudah sukses membuat repository dan membuat sebuah file, didalam git version control, terdapat 3 jenis kondisi file :
- Modified
sudah terjadi perubahan pada suatu file, namun belum ditambahkan kedalam version control git - Staged
sudah ditandai git, namun belum disimpan dalam version control git - Commited
sudah di commit, file sudah disimpan dalam version control git, selanjutnya dapat dimerge atau lain sebagainya
pada contoh diatas, kita membuat file dan belum menandainya.
Merubah Kondisi File Ke Staged
Sebagai contoh, kita buat terlebih dahulu beberapa file, misal latihan1.php, latihan2.php, lalu modifikasi file ini untuk kita rubah statusnya ke staged. Untuk menandai file yang sudah kita modifikasi ke status staged, adalah sebagai berikut :
#buat file, dan modifikasi.
nano latihan1.php
nano latihan2.php
#setelah file dimodifikasi, jalankan perintah berikut untuk menandai
git add latihan1.php
git add latihan2.php
#atau dalam satu perintah
git add latihan1.php latihan2.php
#atau menandai semua file dengan extensi .php
git add *.php
#atau menandai semua file
git add .
#cek statusnya
git status
#output
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .gitignore
new file: latihan1.php
new file: latihan2.php
Merubah Kondisi File ke Commited
Untuk menyimpan file yang sudah kita tandai ke version control git, kita harus merubah status file menjadi commited, untuk merubahnya sebagai berikut :
#melakukan git commit
git commit -m "Commit pertama"
#output
[master (root-commit) dd0ad1a] Commit pertama
3 files changed, 5 insertions(+)
create mode 100644 .gitignore
create mode 100644 latihan1.php
create mode 100644 latihan2.php
#cek git status
git status
#output
On branch master
nothing to commit, working tree clean
pada kondisi ini, semua file sudah di commit ke version control git, jika kita memodifikasi file lagi, maka status filenya menjadi modified, kita harus merubah ke staged dan ke commit.
#merubah latihan1.php
nano latihan1.php
#edit menjadi seperti ini
Belajar Latihan 1
ini perbaikan kedua
#cek git status
git status
#output
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: latihan1.php
no changes added to commit (use "git add" and/or "git commit -a")
#rubah status ke staged
git add latihan1.php
#rubah status ke commited
git commit -m "Perubahan pada latihan1.php"
#output
[master f7e48c3] Perubahan pada latihan1.php
1 file changed, 1 insertion(+)
#cek lagi git status
git status
#output
On branch master
nothing to commit, working tree clean
begini seterusnya, jika ada perubahan dan selesai commit, kita dapat melihat log aktifitasnya dengan perintah git log
#cek log perubahan
git log
#output
commit f7e48c328a17c3b97d0034e38c62d67bb1b41b89 (HEAD -> master)
Author: najcardboyz <najcardboyz.03@gmail.com>
Date: Tue Jan 22 11:07:07 2019 +0800
Perubahan pada latihan1.php
commit dd0ad1a6f842f60d9325449cf592bc1ab4b885ad
Author: najcardboyz <najcardboyz.03@gmail.com>
Date: Tue Jan 22 10:55:57 2019 +0800
Commit pertama
(END)
#untuk versi singkat dapat ditambahkan argument --oneline
git log --oneline
#output
f7e48c3 (HEAD -> master) Perubahan pada latihan1.php
dd0ad1a Commit pertama
(END)
#cara-cara lain melihat log
#log ver version
git log dd0ad1a6f842f60d9325449cf592bc1ab4b885ad
#log ver author
git log --author='najcardboyz'
#log branch dan namanya
git log --graph --oneline --decorate --all
Melihat Perbedaan/Perubahan File dengan Git Diff
Untuk mengetahui perbedaan file yang sudah kita modifikasi sebelumnya, kita dapat menggunakan perintah git diff, bisa dengan nama file atau id commit yang ingin dilihat. berikut contohnya :
#melihat log untuk mengambil nomor revisi
git log
#kemudian ambil nomor revisinya, dan git diff
git diff dd0ad1a6f842f60d9325449cf592bc1ab4b885ad f7e48c328a17c3b97d0034e38c62d67bb1b41b89
diff --git a/latihan1.php b/latihan1.php
index 24b7435..f721918 100644
--- a/latihan1.php
+++ b/latihan1.php
@@ -1 +1,2 @@
Belajar Latihan 1
+ini perbaikan kedua
simbol (+) artinya penambahan kode (-) artinya dihapus
Membatalkan Perubahan pada Git
git mencatat setiap perubahan kode yang kita lakukan, sesuai dengan tugasnya sebagai version control, jika suatu saat kita ingin mengembalikan perubahan yang sudah kita lakukan pada proyek kita. dapat menggunakan perintah-perintah berikut :
#membatalkan perubahan pada file, sebelum GIT ADD
-------------------------------------------------------------------------
git checkout latihan1.php
#membatalkan perubahan pada file, sesudah GIT ADD
#harus di GIT RESET terlebih dahulu
-------------------------------------------------------------------------
git reset latihan1.php
git checkout latihan1.php
#membatalkan perubahan yang sudah di COMMIT
#setelah git checkout, file dalam kondisi staged
-------------------------------------------------------------------------
#git log ambil id commit, dan file
git checkout dd0ad1a6f842f60d9325449cf592bc1ab4b885ad latihan1.php
#untuk membatalkan kondisi staged (hati-hati dengan perintah reset)
#git reset menghilangkan histori perubahan sebelum perintah git reset
git reset latihan1.php
#kembalikan semua file ke kondisi commit tertentu
git checkout dd0ad1a6f842f60d9325449cf592bc1ab4b885ad
#membatalkan ke 3 commit sebelumnya
-------------------------------------------------------------------------
git checkout HEAD~3 script.php
#membatalkan semua perubahan ke id commit tertentu
-------------------------------------------------------------------------
git revert -n dd0ad1a6f842f60d9325449cf592bc1ab4b885ad
git reset adalah membatalkan perubahan / mengembalikan kondisi file ke sebelumnya, dan menghapus histori/catatan commit sesudahnya sebelum direset. sedangkan git revent adalah mengembalikan kondisi file ke sebelumnya, dan tidak menghapus histori/catatan commit sesudahnya.
Membuat dan Menggabungkan Branch pada Git
Branch berguna jika ada banyak orang yang mendevelop sebuah sistem, misal si A membuat fitur login, si B membuat fitur register, agar tidak bentrok saat mengerjakan bersama-sama, gunakan branch sebagai cabang dari setiap fitur yang akan dibuat.
#membuat branch login dan register
git branch login
git branch register
#melihat branch
git branch
#output
login
* master
register
#tanda bintang menandakan branch aktif
#pindah ke branch tertentu
git checkout login
#output
Switched to branch 'login'
#cek branch lagi
git branch
#output
* login
master
register
saat branch login aktif, maka ketika kita memodifikasi sebuah file, akan tersimpan pada branch tersebut, jika kita kembali ke branch master, maka kita tidak akan melihat perubahan sebelumnya yang dilakukan pada branch login. jika kita sudah selesai dengan branch dan ingin menggabungnya, maka gunakan perintah git merge seperti berikut :
#saat di branch login, commit perubahan, lalu kembali ke branch master
git branch master
#gabungkan branch login (dari branch master)
git merge login
#jika terjadi bentrok file disini, perbaiki file/scriptnya manual,
#lakukan git add file yang bentrok
#lakukan git commit
#jika selesai, delete branch login
git branch -d login
Upload ke Github.com
agar dapat kolaborasi, tentu harus ada yang bertindak sebagai git server, lebih mudah menggunakan layanan pihak ketiga sebagai servernya, contohnya github.com atau bitbucket.com, atau jika mau memasang server git sendiri ke server yang kita punya menggunakan gitlab.
di artikel sebelumnya Membuat Repository di Github dan Menambahkan Collabolator untuk Kerja Team sudah dicontohkan membuat private repository dan menambahkan collabolator maksimal 3 orang, atau unlimited contribotor jika repository bersifat public.
copy terlebih dahulu link repository yang akan kita gunakan

kemudian pada terminal di proyek git kita jalankan perintah berikut :
#tambahkan repository kosong yang dibuat di github
git remote add origin https://github.com/najcardboyz/belajar-git.git
#cek remote yang tersedia
git remote -v
#output
origin https://github.com/najcardboyz/belajar-git.git (fetch)
origin https://github.com/najcardboyz/belajar-git.git (push)
#mengirimkan revisi ke server remote dengan perintah
#git push origin “nama branch”, misal master
git push origin master
#output
Username for 'https://github.com': {isi username github}
Password for 'https://najcardboyz@github.com': {isi password github}
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 4 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (9/9), 763 bytes | 763.00 KiB/s, done.
Total 9 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.
To https://github.com/najcardboyz/belajar-git.git
* [new branch] master -> master
Download Github.com
Jika kita mau mendownload dari github utuk melakukan kerja team, maka menggunakan perintah git clone, berikut caranya :
git clone https://github.com/najcardboyz/belajar-git.git
#output
Cloning into 'belajar-git'...
Username for 'https://github.com': {isi username github}
Password for 'https://najcardboyz@github.com': {isi password github}
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 9 (delta 1), reused 9 (delta 1), pack-reused 0
Unpacking objects: 100% (9/9), done.
#lalu melakukan revisi dan tandai semua file ke status staged
git add .
#lakukan commit
git commit -m "keterangan"
#push kembali ke github branch master
git push origin master
Mengambil Commit Terbaru dari remote Github
Jika anda sudah punya local repository, dan remote repository, kemudian dalam kasus ini sudah ada perubahan di remote, misal membuat readme file di github dan melakukan commit, anda ingin mengambil perubahan di remote untuk ditambahkan ke local repository, berikut langkah-langkahnya :
#ada dua cara, yaitu
#git pull akan commit dari remote lalu merge (jika tidak ada commit di local)
#git fetch akan commit dari remote, tidak di merge (jika ada commit di local, mencegah bentrok)
git pull origin master
git fetch origin master
#contoh misal git fetch
git fetch origin master
#output
Username for 'https://github.com': {isi username github}
Password for 'https://najcardboyz@github.com': {isi password github}
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/najcardboyz/belajar-git
* branch master -> FETCH_HEAD
4e1df31..7e5b33b master -> origin/master
#merge dengan branch origin master
#pindah ke branch master local dulu
git checkout master
#merge branch dari origin master
git merge master origin/master
output
Updating 4e1df31..7e5b33b
Fast-forward
README.md | 3 +++
1 file changed, 3 insertions(+)
create mode 100644 README.md
jika terjadi error fatal : refusing to merge unrelated histories saat mencoba merge database dan website ke server , maka solusi mudahnya adalah maka anda terlebih tambahkan parameter --allow-unrelated-histories
#pindah ke repository master di local
git checkout master
#download dari github, force perbolehkan unrelated history
git pull origin master --allow-unrelated-histories
Git Commit untuk Multiple Branch
terkadang, commit terakhir kita pada suatu branch sama dengan branch lain, untuk melakukannya, kita bisa commit pada branch A, kemudian pindah ke branch B, dan lakukan perintah cherry-pick untuk copy commit sebelumnya (terakhir) dari branch yang ingin dicopy.
#pindah ke branch yang akan dicopy
git checkout branch-A
#lakukan perubahan dan commit
git commit -m "perbaikan pada branch A"
#pindah ke branch baru yang ingin disamakan
git checkout branch-B
#lakukan perintah cherry-pick ke branch A
git cherry-pick branch-A
Dengan sering latihan dan uji coba, akan memudahkan dalam menggunakan git, bahkan akan sangat berguna sekali bagi developer. menggunakan git merupakan syarat utama untuk kerja dengan team.