Perintah 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.

KeteranganPerintah
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

[email protected]:path/ke/repo : clone melalui protokol ssh

Bekerja dengan Git

Berikut ini adalah perintah yang dilakukan selama sesi coding.

KeteranganPerintah
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.

KeteranganPerintah
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

KeteranganPerintah
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

Referensi

git rebase <new-base>
Pindahkan komit cabang saat ini ke ujung <new-base> , yang dapat berupa nama cabang atau komit ID.
git rebase -i <new-base>
Lakukan rebase interaktif dan memilih tindakan untuk setiap komit.
git commit --amend
Tambahkan dipentaskan perubahan terbaru komit bukan membuat yang baru.
git rebase --continue
Lanjutkan rebase setelah mengubah komit.
git rebase --abort
Abaikan rebase interaktif saat ini dan kembali repositori untuk keadaan semula.
git merge --no-ff <cabang-name>
Memaksa gabungan komit bahkan jika Git bisa melakukan gabungan fast-forward.