Tutorial Git Sehari-hari
Pada artikel ini, kita akan mengulas secara singkat perintah-perintah yang sering kita gunakan dalam Git. Tapi sebelum mulai, perlu kita pahami beberapa istilah sebagai berikut:
- diff : perbedaan antara satu file dengan file lain biasanya diff dilakukan terhadap satu file yang sudah berubah isinya
- changeset : kumpulan diff
- working folder : folder kerja kita, berisi file yang (mungkin) sudah berubah sejak commit terakhir
- staging : tempat persiapan changeset yang akan dicommit
- commit : snapshot dari posisi folder dan file pada waktu tertentu
- tip : commit paling ujung
- head : nama lain tip
- branch : head yang diberi nama
- HEAD : head yang sedang aktif
- merge : menggabungkan lebih dari satu commit
Membuat Repository
Untuk bisa mulai bekerja, kita harus memiliki repository dulu. Ada dua kemungkinan, kita membuat repository baru, atau kita membuat clone dari repository yang sudah ada.
Keterangan | Perintah |
---|---|
membuat repository baru | git init |
membuat repository baru di folder project-baru | git init project-baru |
membuat repository untuk dishare | git init –bare project-baru |
copy repository lain | git clone repo-url |
pilihan format URL
file:///path/ke/repo : clone dari folder lokal
/path/ke/repo : clone dari folder lokal, menggunakan hard link
http://server/path/ke/repo : clone melalui protokol http
username@server:path/ke/repo : clone melalui protokol ssh
Bekerja dengan Git
Berikut ini adalah perintah yang dilakukan selama sesi coding.
Keterangan | Perintah | |
---|---|---|
Menambah file baru | git add namafile | |
Menghapus file | git rm namafile | |
Memasukkan perubahan di satu file ke staging area | git add namafile | |
memasukkan semua perubahan | git add . | |
memilih potongan kode yang akan dimasukkan | git add -p | |
memasukkan perubahan ke staging menggunakan menu | git add -i | |
melihat status perubahan file, mana yang masih di working dan mana yang sudah di staging | git status | |
mengeluarkan perubahan dari staging area | git reset – namafile | |
melihat perubahan yang belum dimasukkan ke staging area | git diff | |
melihat perubahan yang akan dicommit (sudah ada di staging area) | git diff –staged | |
melihat perubahan antara working folder dan commit terakhir | git diff HEAD | |
melihat file mana saja yang berubah | git diff –name-status abc123..def456 | |
melakukan commit, editor akan diaktifkan untuk mengisi keterangan | git commit | |
melakukan commit, langsung mengisi keterangan | git commit -m “langsung isi keterangan di sini” commit langsung semua perubahan, tanpa melalui staging | git commit -a |
melihat commit history | git log | |
log lima commit terakhir | git log -5 | |
log hanya menampilkan summary | git log –oneline | |
tampilkan commit summary dari semua branch dengan graph hubungan antar commit | git log –oneline –all –graph | |
membuat commit baru yang berkebalikan dengan (undo) commit terakhir | git revert HEAD undo | |
2 commit terakhir | git revert HEAD~2 | |
memindahkan HEAD ke commit-id yang diminta, staging disamakan dengan HEAD, working tetap seperti semula. | ||
Ini adalah opsi defaultnya reset | git reset –mixed | |
memindahkan HEAD ke commit-id yang diminta, isi working dan staging disamakan dengan commit-id tersebut | git reset –hard commit-id | |
memindahkan HEAD ke commit-id yang diminta, staging dan working tidak disentuh. Tidak mengubah output git status | git reset –soft | |
membuat working dan staging sama dengan HEAD | git reset –hard |
Bekerja paralel menggunakan branch
Branch memungkinkan kita bekerja secara paralel, misalnya ada tim yang menambah fitur, dan ada tim yang melakukan bug fix.
Keterangan | Perintah |
---|---|
membuat branch baru | git branch namabranch |
pindah ke branch tersebut | git checkout namabranch |
bikin branch sambil pindah | git checkout -b namabranch |
membuat tracking branch untuk branch bugfix di origin | git checkout –track origin/bugfix |
membuat tracking branch dengan nama berbeda dengan remote | git checkout -b myfix origin/bugfix |
membandingkan branch satu dengan lainnya | git diff master..fitur-xx |
membandingkan branch dengan titik awal branch tersebut | git diff master…fitur-xx |
menggabungkan branch satu dengan lainnya | git checkout branch-tujuan |
git merge branch-yang-mau-diambil | |
Mengedit konflik : | |
- edit konfliknya | git add namafile-yang-konflik |
- remove markernya | git commit -m “merge fitur-xxx ke master” |
membatalkan merge yang konflik | git reset –hard |
Bekerja dengan remote
Interaksi dengan remote repository
Keterangan | Perintah |
---|---|
mendaftarkan remote repository | git remote add namaremote url |
melihat daftar remote repository | git remote -v |
menghapus remote repository | git remote rm namaremote |
mengambil perubahan di remote | git remote update |
mengambil perubahan di satu remote saja | git remote update namaremote |
mengambil perubahan di remote, hapus branch di lokal yang sudah tidak ada di remote | git remote update –prune |
mengambil perubahan sesuai refspec yang sudah dikonfigurasi | git fetch namaremote |
mengambil perubahan kemudian dimerge ke branch lokal yang sesuai | pull = fetch + merge |
git pull namaremote | |
mengirim perubahan di lokal ke remote | git push nama-remote nama-branch-lokal:nama-branch-remote |
mengirim perubahan di lokal ke remote, semua branch yang namanya bersesuaian akan dikirim | git push nama-remote |
mengirim perubahan di branch lokal yang sedang aktif ke branch di remote dengan nama yang sama | git push nama-remote HEAD |
menghapus branch di remote | git push nama-remote :nama-branch-remote |
Demikianlah perintah-perintah Git yang kita gunakan sehari-hari. Melengkapi daftar perintah di atas, diagram berikut dapat membantu pemahaman kita tentang konsep dan operasi di Git.