Catatan Dasar Perintah GIT
Dasar-dasar command pada git
1. Git Config
Melakukan konfigurasi terkait git environment di PC / Laptop kita, beberapa perintahnya seperti berikut:
# melakukan konfigurasi nama user agar dapat dikenali user yang beraktifitas
git config --global user.name "nama user"
# melakukan konfigurasi email user
git config --globa user.email "user@email.com"
# menggunakan (code) visual studio code sebagai default editor untuk git dan default diff tool
git config --global core.editor "code --wait"
git config --global diff.tool "default-difftool"
git config --global difftool.default-difftool.cmd "code --wait --diff \$LOCAL \$REMOTE"
# melihat seluruh konfigurasi yang sudah dilakukan
git config --list --show-origin
2. Melihat perubahan
Untuk Melihat perubahan pada section working directory atau state modified (sebelum git add)
git diff
3. Membatalkan perubahan (section working directory)
Untuk membatalkan perubahan yang terjadi pada section working directory (sebelum git add). Beberapa contoh perintahnya seperti berikut:
# membatalkan penambahan file, semua file yang sudah ditambahkan
git clean -f
# membatalkan perubahan file yang telah dirubah maupun mengembalikan file yg dihapus
git restore <nama_file>
4. Membatalkan perubahan (state staging)
Untuk membatalkan perubahan pada section staging area atau state staging (index), maka tidak bisa langsung menggunakan perintah nomor 3, yang perlu dilakukan adalah sebagai berikut:
# mengembalikan file pada state staging ke state modified
git restore --staged <nama_file>
setelah menggunakan perintah di atas maka file akan kembali ke section working directory, dan selanjutnya bisa menggunakan perinah nomor 3.
5. Melihat History Log
Untuk dapat melihat Log / History perubahan yang telah dilakukan bisa menggunakan perintah berikut:
# menampilkan baris log secara lengkap
git log
# menampilkan log dalam satu baris
git log --oneline
# menampilkan log dengan keterkaitan dengan branch lain
git log --oneline --graph
# menampilkan detail perubahan berdasarkan hash git nya
git show <hash_code> # git show f77ab73
6. Membandingkan perubahan
Untuk dapat membandingkan perubahan / commit antar hash commit:
# membandingkan 2 hash
git diff <hash_code1> <hash_code2>
# membandingkan 2 hash dengan menggunakan tools (VSCode jika sudah di setting difftol menggunakan VSCode)
git difftool <hash_code1> <hash_code2>
contoh:
git diff 083c319 f77ab73
ataugit diff 083c319 HEAD
(HEAD = commit terakhir)
7. Reset commit
Untuk reset commit (yaity membatalkan perubahan yang sudah terlanjur di commit)
# sebelum melakukan reset lebih baik copy dulu semua log hash perubahan untuk antisipasi
git reset <mode> <hash_code>
catatan :
--soft
=> memindahkan HEAD pointer, namun tidak melakukan perubahan apapun di Staging Index dan Working Directory
--mixed
=> memindahkan HEAD pointer, mengubah Staging Index menjadi sama seperti dengan Repository, namun tidak mengubah apapun di Working Directory
--hard
=> memindahkan HEAD pointer, dan mengubah Staging Index dan Working Directory sehingga sama dengan Repository
8. Amend commit
Untuk dapat amend commit (yaitu menambahkan commit ke commit terakhir)
git commit --amend -m "message commit"
9. Melihat Versi
Untuk Melihat / kembali ke versi git sebelumnya bisa menggunakan perintah berikut:
# untuk melihat versi pada spesific file
git checkout <hash_code> --nama_file
# untuk melihat versi pada semua file dengan hash yg dicari
git checkout <hash_code>
contoh:
melihat versi pada file dengan nama file1.txt dan pada hash = 747d23fgit checkout 747d23f --file1.txt
melihat versi pada semua file untuk hash = 747d23f
git checkout 747d23f
10. Revert commit
Revert commit (melakukan kebalikan commit yg telah dilakukan)
# mengembalikan semua perubahan dari hash_code yg diinginkan (kebalikan yg telah dilakukan)
# tidak akan menghapus hash commit setelahnya
git revert <hash_code>
11. Blame
Blame (yaitu untuk mengetahui user yg melakukan perubahan file beserta commitnya)
git blame <nama_file>
12. Branching
beberpa perintah yang dapat digunakan untuk branching:
# melihat branch yang ada di local repository kita
git branch
# melihat current branch yg digunakan
git branch --show-current
# menambah branch baru
git branch <nama_branch> # git branch development
# pindah antar branch
git switch <nama_branch>
git checkout <nama_branch>
# merubah nama branch (harus pindah dulu ke branch yang akan dirubah)
git branch -m <nama_branch_baru>
# menghapus nama branch (harus pindah dulu ke branch yang akan dihapus)
git branch -d <nama_branch>
git branch -delete <nama_branch>
13. Merge branch
Yaitu melakukan penggabungan antar 2 branch
git merge <nama_branch> # melakukan merge ke current branch
git merge <nama_branch_sumber> <nama_branch_tujuan> # melakukan merger untuk spesifik branch
git merge --abort # membatalkan perubahan (membatalkan merge)
14. Cherry Pick
Cherry pick merupakan fitur yang digunakan untuk mengambil commit dari branch manapun dan kita merge ke dalam branch saat ini
git cherry-pick <commit_id> # git cherry-pick a914f8c
15. Tag
Tag merupakan fitur dimana kita bisa menandai sebuah commit_id
# membuat tag 1.0.0 dengan commit_id = f8a83aa
git tag <tag_name> <commit_id> # git tag 1.0.0 f8a83aa
# melihat list tag yg telah dibuat
git tag -l
git tag --list
# checkout ke tag tertentu
git checkout <nama_tag> # git checkout 1.0.0
# menghapus tag
git tag -d <nama_tag> # git tag -d 1.0.0
git tag --delete <nama_tag> # git tag --delete 1.0.0
16. Stash
- Untuk menyimpan semua perubahan yang terjadi di Working dan Staging Index, kita bisa menggunakan Stash.
- Stash merupakan sebuah tempat dimana kita bisa menyimpan perubahan di Working atau Staging Index secara sementara agar branch saat ini bersih kembali, sehingga memungkinkan untuk switch branch.
# Untuk menyimpan perubahan ke Stash
git stash push -m "message stash"
# Untuk melihat semua Stash
git stash list
# Untuk melihat perubahan yang terjadi di Stash
git stash show <stash_id>
# Untuk mengambil perubahan di stash (lakukan di branch yang akan dituju)
git stash apply <stash_id>
# Untuk menghapus stash
git stash drop <stash_id>
# Untuk menghapus semua stash
git stash clear
17. Rebase
Cara lain menggabungkan dua branch selain menggunakan git merge
git rebase <nama_branch>
Contoh: posisi di branch develop dan kita melakukan
git rebase master
Perintah di atas berarti kita melakukan rebase semua commit di master ke branch develop.
18. Squash
- Menggabungkan beberapa commit menjadi 1 commit.
- Squash bisa dilakukan ketika merge atau ketika rebase
git merge --squash <nama_branch>
19. Git Branch Strategy
Pada git ada beberapa strategy untuk management branch, antara lain: