GIT DASAR
Memastikan Git Berjalan:
git --version
Tool Pembantu:
View > Command Pallete > Install Code > Install 'code' command in PATH
Configuration:
git config --global user.name "Iis Istiqomah"
git config --global user.email "iisistiqomah20@gmail.com"
Menggunakan Visual Studio Code:
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 Configuration:
git config --list --show-origin
Membuat Repository:
git init
Mengecek Perubahan:
git status
Memindahkan Perubahan File ke Staging Index:
git add namaFile
Memindahkan Semua Perubahan File ke Staging Index:
git add .
Menyimpan Perubahan ke Repository:
git commit -m "messagenya apa"
Melihat Perubahan File:
git diff
Membatalkan Penambahan File di Working Directory:
git clean -f
Membatalkan Perubahan/Penghapusan File:
git restore namafile
Membatalkan dari Staging Index:
git restore --staged namafile
Commit Log (Melihat semua Riwayat Commit):
git log
Commit Log Sederhana:
git log --oneline
git log --oneline --graph
Melihat Detail Commit:
git show hash
Compare Commit (membandingkan hasil commit - dulu dan sekarang):
git diff hash1 hash2
git difftool hash1 hash2
Reset Commit:
git reset <mode> hash
Mode Git Reset
- --soft, memindahkan HEAD pointer, namun tidak melakukan perubahan apapun di Staging Index dan Working Directory
- --mixed (default), 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
Note:
- Ketika menggunakan --soft maka perubahan yang ada di commit sebelumnya tidak ikut dihapus, artinya perubahannya masih tetap ada (dari repository ke staging index dan dari staging index ke working directory, tergantung terakhir perubahannya ada di mana).
- Ketika menggunakan --mixed maka perubahannya masih tetap ada di working directory (yang ikut direset ke posisi HEAd adalah staging index)
- Ketika menggunakan --hard maka semua perubahannya hilang (HEAD, staging index, dan working directory direset juga).
- Kita bisa kembali ke awal commit selama belum membuat commit baru.
Rewrite Riwayat Commit
- Jika kita melakukan reset, namun kita belum membuat commit baru, kita masih bisa kembali maju lagi ke commit yang paling baru
- Namun jika kita membuat commit baru, secara otomatis commit lama akan ditimpa oleh commit baru
Menambah Perubahan yang Terlupakan ke Commit Terakhir/Merge (Hash Commit Terakhir akan diganti dengan Hash Commit baru):
git commit --amend
Kembali pada Snapshoot Sebelumnya:
git checkout hash
Kembali pada Snapshoop Terakhir:
git checkout namabranch
Membatalkan Commit (Melakukan kembalikan/ After ke Before - akan dibuatkan commit baru):
git revert hash
Mencari Tahu Siapa yang Melakukan Perubahan File di Commit:
git blame namafile
Menambah Perintah Lain untuk yang sudah ada di GIT:
git config --global alias.ko commit
git config --global alias.logone "log --oneline"
---------------------------------------------------------------
GIT BRANCHING
Melihat Branch Saat Ini:
git branch --show-current
Membuat Branch:
git branch namabranchbaru
Melihat Semua Branch:
git branch --list
git branch
Pindah ke Branch Lain:
git switch namabranch
git checkout namabranch
Mengubah Nama Branch (Pindah dulu ke branch yang mau diubah namanya):
git branch -m namabranchbaru
Menghapus Branch (Harus keluar dulu dari branch yang ingin dihapus):
git branch -d namabranch
git branch --delete namabranch
Menggabungkan Branch (Misal: branch master akan melakukan merge dan branch A akan di merge ke branch master, maka pindah dulu ke branch master lalu ex: git merge A):
git merge namabranch
Membatalkan Conflict (membatalkan merge):
git merge --abort
Cherry Pick (Mengambil commit dari branch manapun dan kita merge ke branch saat ini):
git cherry-pick commitId
Membuat Tag (Menandai Sebuah Commit ID):
git tag tagName commitId
Menampilkan Daftar Tag:
git tag -l
git tag --list
Checkout ke Tag:
git checkout tagname
Menghapus Tag:
git tag -d namatag
git tag --delete nametag
Stash (Tempat menyimpan perubahan di working directory/staging index sementara):
git stash push -m ‘message stash’
Melihat Semua Stash:
git stash list
Melihat Perubahan yg Terjadi di Stash:
git stash show stashId
Mengambil Perubahan di Stash:
git stash apply stashId
Menghapus Stash:
git stash drop stashId
Menghapus Semua Stash:
git stash clear
Rebase (Menggabungkan dua branch yg menjadikan commitnya jadi satu timeline)
- Misal: menjadikan commit terakhir di branch master menjadi basenya dari commit-commit branch A (branch master melakukan rebase, branch A yang direbase)
- Caranya: pindah dulu ke branch A lalu, ex: git rebase master, hasilnya commit-commit di branch A akan dibuat ulang di branch master di depan commit terakhir branch master sehingga menjadi satu timeline)
- Setelah itu, jika kita pindah ke branch master, posisi HEAD di branch master masih tetap berada di commit terakhir branch master, sehingga kita perlu melakukan merge untuk memindahkan posisi HEAD ke commit yang paling depan, caranya: pindah ke branch master lalu lakukan, ex: git merge A. Hasilnya posisi HEAD di branch master ada di commit paling depan yang sama dengan di branch A)
Melakukan Rebase:
git rebase namaBrach
Squash (Menggabungkan semua commit di branch A ke branch master ke dalam satu commit)
- Misal, di branch A kita membuat dua commit, lalu pindah ke branch master, di branch master lakukan ex: git merge --squash A, maka perubahan di commit-commit di branch A akan ada di staging index branch master. Selanjutnya lakukan commit.
- Note: branch A masih tetap ada dan timelinenya tetap bercabang.
posisi di branch master, ex: git merge --squash A, nanti ditarik ke staging index):
git merge --squash namabranch
-----------------------------------------------------------------------------------------
GIT REMOTE
SSH (Protokol jaringan untuk komunikasi jaringan)
Membuat SSH Key:
ssh-keygen
Tes SSH ke GitHub:
ssh -T git@github.com
Menambah Remote Repository:
git remote add namaRemote ssh-url
Melihat Remote Repository:
git remote
Melihat URL Detail Remote Repository:
git remote get-url nama
Menghapus Remote Repository:
git remote rm nama
Push Branch ke Remote Repository:
git push namaremote localbranch
Push Branch dengan Nama Branch Berbeda dengan di Local:
git push namaremote localbranch:remotebranch
Push Semua Branch ke Remote Repository:
git push origin --all
Menghapus Branch di Remote Repository:
git push --delete namaremote namabranch
Melakukan Clone Remote Repository:
git clone urlremoterepository
Melakukan Clone Remote Repository (dengan nama project berbeda):
git clone urlremoterepository namafolder
Default Hasil Clone:
- Default clone akan berisi remote repository origin ke git remote repository yang kita clone
- Default clone akan berisikan branch utama di remote repository
Melihat Daftar Remote Branch:
git branch -r
Melihat Daftar Remote Branch dan Local Branch:
git branch -a
Membuat Branch dari Remote Branch (yang berisikan data dari remote branch):
git checkout -b localbranch namaremote/remotebranch
Fetch: untuk melihat perubahan terakhir di remote repository
Melakukan Fetch:
git fetch namaremote
Melakukan Fetch (di remote branch tertentu):
git fetch namaremote remotebranch
Membandingkan Branch Local dan Branch Remote:
git diff brachlocal..namaremote/branchremote
Pull: mengambil Perubahan di remote repository dan disimpan di local repository
Melakukan Pull:
git pull namaremote namaremotebranch
Mengirim Tag Tertentu ke Remote Repository:
git push namaremote nametag
Mengirim Semua Tag ke Remote Repository:
git push namaremote --tags
Mengambil Tag tertentu dari Remote Repository:
git fetch namaremote nametag
Mengambil Semua Tag dari Remote Repository:
git fetch namaremote
Menghapus Tag di Remote Repository:
git push --delete namaremote nametag
Pull Request: fitur di GitHub utuk melakukan merge branch di remote repositorynya langsung
Melakukan Merge Conflict Saat Pull Request:
git merge namaremote/remotebranch
Submodule: folder yang berisi library lain di Remote Repository (submodule nge-link ke library lain).
Menambah Submodule:
git submodule add urlgitrepo namafolder
Mengupdate (Mengambil Perubahan) Submodule Tertentu:
git submodule update --remote namafolder
Mengupdate (Mengambil Perubahan) Semua Submodule:
git submodule update --remote
Clone Submodule (dilakukan oleh user yang meng-clone remote repository):
Langkah 1:
git submodule init
Langkah 2:
git submodule update --remote
Mengubah Branch Submodule:
Langkah 1:
git submodule update --remote
Langkah 2:
git submodule set-branch --branch namabranch namafolder
Langkah 3:
git submodule update --remote
Mengubah Branch Submodule (dilakukan oleh user yang meng-clone remote repository):
Langkah 1:
git pull namaremote remotebranch
Langkah 2:
git submodule update --remote
Menghapus Submodule:
Untuk menghapus submodule, kita bisa hapus folder submodule nya, lalu ubah file .gitmodules nya
Fork (duplikasi project remote repository, biasanya jika mau kontribusi ke project opensource)
SELESAI.
0 Komentar