VERSION-CONTROL DOCS
FUNDAMENTAL
Name
Description
Example
Output
Apa itu Version Control?Description: Sistem yang merekam perubahan pada file dari waktu ke waktu sehingga Anda dapat memanggil kembali versi tertentu nanti.
Example:
Menyimpan setiap perubahan kode sebagai 'commit' sehingga bisa kembali ke versi sebelumnya jika terjadi bug.
Output: Sejarah proyek terlacak sepenuhnya.
Apa itu Version Control?Sistem yang merekam perubahan pada file dari waktu ke waktu sehingga Anda dapat memanggil kembali versi tertentu nanti.
Menyimpan setiap perubahan kode sebagai 'commit' sehingga bisa kembali ke versi sebelumnya jika terjadi bug.
Sejarah proyek terlacak sepenuhnya.
Manfaat Version ControlDescription: Kolaborasi tim, lacak perubahan, eksperimen aman (branch), backup, dan audit trail.
Example:
Dua developer mengerjakan fitur berbeda di branch masing-masing lalu digabungkan tanpa saling menimpa.
Output: Proses pengembangan paralel yang aman.
Manfaat Version ControlKolaborasi tim, lacak perubahan, eksperimen aman (branch), backup, dan audit trail.
Dua developer mengerjakan fitur berbeda di branch masing-masing lalu digabungkan tanpa saling menimpa.
Proses pengembangan paralel yang aman.
Centralized vs DistributedDescription: Centralized (CVS, SVN): satu server pusat. Distributed (Git): setiap klien memiliki salinan repositori penuh.
Example:
Git memungkinkan bekerja offline dan commit lokal sebelum push ke remote.
Output: Lebih cepat, offline-capable, dan aman karena setiap klien adalah backup.
Centralized vs DistributedCentralized (CVS, SVN): satu server pusat. Distributed (Git): setiap klien memiliki salinan repositori penuh.
Git memungkinkan bekerja offline dan commit lokal sebelum push ke remote.
Lebih cepat, offline-capable, dan aman karena setiap klien adalah backup.
Git Tiga StatusDescription: Modified (working directory) → Staged (staging area) → Committed (local repository).
Example:
git add memindahkan perubahan dari working directory ke staging area. git commit memindahkan dari staging ke repository.
Output: Alur kerja dua langkah yang fleksibel.
Git Tiga StatusModified (working directory) → Staged (staging area) → Committed (local repository).
git add memindahkan perubahan dari working directory ke staging area. git commit memindahkan dari staging ke repository.
Alur kerja dua langkah yang fleksibel.
SETUP-KONFIGURASI
Name
Description
Example
Output
git config --global user.nameDescription: Mengatur nama pengguna yang akan digunakan pada setiap commit di semua repositori.
Example:
git config --global user.name "Ridho Akbar"
Output: Nama tersimpan di ~/.gitconfig
git config --global user.nameMengatur nama pengguna yang akan digunakan pada setiap commit di semua repositori.
git config --global user.name "Ridho Akbar"
Nama tersimpan di ~/.gitconfig
git config --global user.emailDescription: Mengatur email pengguna untuk commit.
Example:
git config --global user.email "ridho@example.com"
Output: Email tersimpan, digunakan untuk identifikasi commit.
git config --global user.emailMengatur email pengguna untuk commit.
git config --global user.email "ridho@example.com"
Email tersimpan, digunakan untuk identifikasi commit.
git config --global core.editorDescription: Menentukan editor teks default untuk menulis pesan commit (misal VS Code).
Example:
git config --global core.editor "code --wait"
Output: Editor terbuka saat git commit tanpa -m.
git config --global core.editorMenentukan editor teks default untuk menulis pesan commit (misal VS Code).
git config --global core.editor "code --wait"
Editor terbuka saat git commit tanpa -m.
git config --global init.defaultBranchDescription: Mengatur nama branch default saat git init (misal 'main' sebagai ganti 'master').
Example:
git config --global init.defaultBranch main
Output: Repo baru akan langsung menggunakan branch 'main'.
git config --global init.defaultBranchMengatur nama branch default saat git init (misal 'main' sebagai ganti 'master').
git config --global init.defaultBranch main
Repo baru akan langsung menggunakan branch 'main'.
git initDescription: Membuat repositori Git baru di direktori yang ada. Membuat folder .git tersembunyi.
Example:
git init my-project
Output: Initialized empty Git repository in my-project/.git/
git initMembuat repositori Git baru di direktori yang ada. Membuat folder .git tersembunyi.
git init my-project
Initialized empty Git repository in my-project/.git/
git clone <url>Description: Menduplikasi repositori remote (GitHub, GitLab) ke lokal beserta seluruh sejarah commit.
Example:
git clone https://github.com/user/repo.git
Output: Folder repo lengkap dengan riwayat commit.
git clone <url>Menduplikasi repositori remote (GitHub, GitLab) ke lokal beserta seluruh sejarah commit.
git clone https://github.com/user/repo.git
Folder repo lengkap dengan riwayat commit.
git clone --branch <name> <url>Description: Clone langsung ke branch tertentu.
Example:
git clone --branch develop https://github.com/user/repo.git
Output: Branch develop yang ter-checkout, bukan main.
git clone --branch <name> <url>Clone langsung ke branch tertentu.
git clone --branch develop https://github.com/user/repo.git
Branch develop yang ter-checkout, bukan main.
DASAR-PERUBAHAN
Name
Description
Example
Output
git statusDescription: Menampilkan status working directory dan staging area: file mana yang berubah, baru, atau siap di-commit.
Example:
git status
Output: On branch main
Changes not staged for commit:
modified: index.js
git statusMenampilkan status working directory dan staging area: file mana yang berubah, baru, atau siap di-commit.
git status
On branch main
Changes not staged for commit:
modified: index.js
git add <file>Description: Menambahkan perubahan pada file tertentu ke staging area (index).
Example:
git add index.html style.css
Output: File siap di-commit.
git add <file>Menambahkan perubahan pada file tertentu ke staging area (index).
git add index.html style.css
File siap di-commit.
git add .Description: Menambahkan semua perubahan (modifikasi, file baru, penghapusan) di direktori saat ini dan subdirektori ke staging.
Example:
git add .
Output: Semua perubahan masuk staging.
git add .Menambahkan semua perubahan (modifikasi, file baru, penghapusan) di direktori saat ini dan subdirektori ke staging.
git add .
Semua perubahan masuk staging.
git add -pDescription: Menambahkan perubahan secara interaktif (patch) – memilih bagian (hunk) mana yang akan di-stage.
Example:
git add -p
Output: Prompt untuk setiap hunk: Stage this hunk [y,n,q,a,d,e,?]?
git add -pMenambahkan perubahan secara interaktif (patch) – memilih bagian (hunk) mana yang akan di-stage.
git add -p
Prompt untuk setiap hunk: Stage this hunk [y,n,q,a,d,e,?]?
git commit -m "<pesan>"Description: Merekam perubahan yang sudah di-staging ke repositori lokal dengan pesan singkat.
Example:
git commit -m "feat: tambahkan halaman login"
Output: [main a1b2c3d] feat: tambahkan halaman login
git commit -m "<pesan>"Merekam perubahan yang sudah di-staging ke repositori lokal dengan pesan singkat.
git commit -m "feat: tambahkan halaman login"
[main a1b2c3d] feat: tambahkan halaman login
git commit -am "<pesan>"Description: Langsung menambahkan perubahan yang sudah terlacak (modified) ke staging dan melakukan commit. Tidak untuk file baru.
Example:
git commit -am "fix: perbaiki typo"
Output: Commit dengan add otomatis untuk file yang sudah ada.
git commit -am "<pesan>"Langsung menambahkan perubahan yang sudah terlacak (modified) ke staging dan melakukan commit. Tidak untuk file baru.
git commit -am "fix: perbaiki typo"
Commit dengan add otomatis untuk file yang sudah ada.
git diffDescription: Menunjukkan perbedaan antara working directory dan staging area (perubahan yang belum di-add).
Example:
git diff
Output: diff --git a/index.js b/index.js
--- a/index.js
+++ b/index.js
@@ -1,4 +1,4 @@
- console.log('lama')
+ console.log('baru')
git diffMenunjukkan perbedaan antara working directory dan staging area (perubahan yang belum di-add).
git diff
diff --git a/index.js b/index.js
--- a/index.js
+++ b/index.js
@@ -1,4 +1,4 @@
- console.log('lama')
+ console.log('baru')
git diff --stagedDescription: Menunjukkan perbedaan antara staging area dan commit terakhir (apa yang akan di-commit).
Example:
git diff --staged
Output: Perubahan yang sudah di-add akan ditampilkan.
git diff --stagedMenunjukkan perbedaan antara staging area dan commit terakhir (apa yang akan di-commit).
git diff --staged
Perubahan yang sudah di-add akan ditampilkan.
git logDescription: Menampilkan riwayat commit di branch saat ini.
Example:
git log --oneline --graph --all
Output: * a1b2c3d feat: halaman login
* e5f6g7h fix: bug navbar
git logMenampilkan riwayat commit di branch saat ini.
git log --oneline --graph --all
* a1b2c3d feat: halaman login
* e5f6g7h fix: bug navbar
BRANCH-PENGGABUNGAN
Name
Description
Example
Output
git branchDescription: Menampilkan daftar branch lokal. Tanda * menunjukkan branch yang sedang aktif.
Example:
git branch
Output: * main
feature-login
git branchMenampilkan daftar branch lokal. Tanda * menunjukkan branch yang sedang aktif.
git branch
* main
feature-login
git branch <nama>Description: Membuat branch baru berdasarkan commit terakhir branch saat ini.
Example:
git branch feature/keranjang
Output: Branch baru dibuat, tetapi Anda tetap di branch sebelumnya.
git branch <nama>Membuat branch baru berdasarkan commit terakhir branch saat ini.
git branch feature/keranjang
Branch baru dibuat, tetapi Anda tetap di branch sebelumnya.
git switch <nama>Description: Berpindah ke branch yang sudah ada (perintah modern, lebih intuitif).
Example:
git switch feature/keranjang
Output: Switched to branch 'feature/keranjang'
git switch <nama>Berpindah ke branch yang sudah ada (perintah modern, lebih intuitif).
git switch feature/keranjang
Switched to branch 'feature/keranjang'
git switch -c <nama>Description: Membuat branch baru dan langsung berpindah ke branch tersebut.
Example:
git switch -c feature/pencarian
Output: Switched to a new branch 'feature/pencarian'
git switch -c <nama>Membuat branch baru dan langsung berpindah ke branch tersebut.
git switch -c feature/pencarian
Switched to a new branch 'feature/pencarian'
git checkout <nama>Description: Cara lama untuk pindah branch atau membuat branch baru dengan -b.
Example:
git checkout -b feature/baru
Output: Switched to a new branch 'feature/baru'
git checkout <nama>Cara lama untuk pindah branch atau membuat branch baru dengan -b.
git checkout -b feature/baru
Switched to a new branch 'feature/baru'
git merge <branch>Description: Menggabungkan branch lain ke branch saat ini. Buat merge commit baru jika tidak fast-forward.
Example:
git merge feature/login
Output: Merge made by the 'ort' strategy.
git merge <branch>Menggabungkan branch lain ke branch saat ini. Buat merge commit baru jika tidak fast-forward.
git merge feature/login
Merge made by the 'ort' strategy.
git rebase <branch>Description: Memindahkan seluruh commit branch saat ini ke ujung branch lain, menghasilkan sejarah linear.
Example:
git switch feature git rebase main
Output: Sejarah menjadi bersih, seolah feature dimulai dari ujung main.
git rebase <branch>Memindahkan seluruh commit branch saat ini ke ujung branch lain, menghasilkan sejarah linear.
git switch feature git rebase main
Sejarah menjadi bersih, seolah feature dimulai dari ujung main.
git branch -d <nama>Description: Menghapus branch yang sudah di-merge dengan aman.
Example:
git branch -d feature/lama
Output: Deleted branch feature/lama (was a1b2c3d).
git branch -d <nama>Menghapus branch yang sudah di-merge dengan aman.
git branch -d feature/lama
Deleted branch feature/lama (was a1b2c3d).
git branch -D <nama>Description: Memaksa menghapus branch meskipun belum di-merge (hati-hati!).
Example:
git branch -D eksperimen-gagal
Output: Deleted branch eksperimen-gagal.
git branch -D <nama>Memaksa menghapus branch meskipun belum di-merge (hati-hati!).
git branch -D eksperimen-gagal
Deleted branch eksperimen-gagal.
REMOTE-KOLABORASI
Name
Description
Example
Output
git remote -vDescription: Menampilkan daftar remote repository beserta URL fetch dan push.
Example:
git remote -v
Output: origin https://github.com/user/repo.git (fetch)
origin https://github.com/user/repo.git (push)
git remote -vMenampilkan daftar remote repository beserta URL fetch dan push.
git remote -v
origin https://github.com/user/repo.git (fetch)
origin https://github.com/user/repo.git (push)
git push origin <branch>Description: Mengirim commit lokal ke branch remote yang sesuai di server.
Example:
git push origin main
Output: Commit terkirim ke GitHub/GitLab.
git push origin <branch>Mengirim commit lokal ke branch remote yang sesuai di server.
git push origin main
Commit terkirim ke GitHub/GitLab.
git push -u origin <branch>Description: Mengirim branch dan menetapkan upstream sehingga ke depan cukup git push.
Example:
git push -u origin feature/login
Output: Branch 'feature/login' set up to track 'origin/feature/login'.
git push -u origin <branch>Mengirim branch dan menetapkan upstream sehingga ke depan cukup git push.
git push -u origin feature/login
Branch 'feature/login' set up to track 'origin/feature/login'.
git fetchDescription: Mengambil commit dan branch dari remote tanpa langsung menggabungkannya ke working directory.
Example:
git fetch origin
Output: Remote-tracking branches diperbarui (origin/main, origin/feature, dll).
git fetchMengambil commit dan branch dari remote tanpa langsung menggabungkannya ke working directory.
git fetch origin
Remote-tracking branches diperbarui (origin/main, origin/feature, dll).
git pullDescription: Mengambil perubahan dari remote (fetch) lalu langsung menggabungkannya (merge) ke branch lokal.
Example:
git pull origin main
Output: Perubahan dari remote masuk ke branch lokal (merge commit mungkin dibuat).
git pullMengambil perubahan dari remote (fetch) lalu langsung menggabungkannya (merge) ke branch lokal.
git pull origin main
Perubahan dari remote masuk ke branch lokal (merge commit mungkin dibuat).
git pull --rebaseDescription: Alternatif pull dengan rebase agar sejarah linear, tidak membuat merge commit yang tidak perlu.
Example:
git pull --rebase origin main
Output: Commit lokal diapply ulang di atas commit remote.
git pull --rebaseAlternatif pull dengan rebase agar sejarah linear, tidak membuat merge commit yang tidak perlu.
git pull --rebase origin main
Commit lokal diapply ulang di atas commit remote.
git push --force-with-leaseDescription: Push paksa yang lebih aman: hanya menimpa remote jika tidak ada commit baru yang belum Anda fetch.
Example:
git push --force-with-lease origin feature/login
Output: Remote branch ditimpa hanya jika tidak ada pekerjaan orang lain.
git push --force-with-leasePush paksa yang lebih aman: hanya menimpa remote jika tidak ada commit baru yang belum Anda fetch.
git push --force-with-lease origin feature/login
Remote branch ditimpa hanya jika tidak ada pekerjaan orang lain.
UNDO
Name
Description
Example
Output
git reset HEAD <file>Description: Menghapus file dari staging area (unstage), tetapi perubahan tetap di working directory.
Example:
git reset HEAD index.html
Output: Unstaged changes after reset: M index.html
git reset HEAD <file>Menghapus file dari staging area (unstage), tetapi perubahan tetap di working directory.
git reset HEAD index.html
Unstaged changes after reset: M index.html
git reset --soft HEAD~1Description: Membatalkan commit terakhir dan menyimpan perubahannya di staging area.
Example:
git reset --soft HEAD~1
Output: Commit terakhir hilang, perubahan siap di-commit ulang.
git reset --soft HEAD~1Membatalkan commit terakhir dan menyimpan perubahannya di staging area.
git reset --soft HEAD~1
Commit terakhir hilang, perubahan siap di-commit ulang.
git reset --mixed HEAD~1Description: Membatalkan commit terakhir dan mengembalikan perubahannya ke working directory (default).
Example:
git reset HEAD~1
Output: Commit terakhir hilang, perubahan masih ada sebagai modified.
git reset --mixed HEAD~1Membatalkan commit terakhir dan mengembalikan perubahannya ke working directory (default).
git reset HEAD~1
Commit terakhir hilang, perubahan masih ada sebagai modified.
git reset --hard HEAD~1Description: Membatalkan commit terakhir dan menghapus perubahannya secara permanen. Gunakan dengan hati-hati!
Example:
git reset --hard HEAD~1
Output: Commit dan perubahan hilang total.
git reset --hard HEAD~1Membatalkan commit terakhir dan menghapus perubahannya secara permanen. Gunakan dengan hati-hati!
git reset --hard HEAD~1
Commit dan perubahan hilang total.
git revert <commit-hash>Description: Membuat commit baru yang membalikkan perubahan dari commit tertentu. Aman untuk branch yang sudah di-push.
Example:
git revert a1b2c3d
Output: Commit revert baru dibuat, sejarah tetap aman.
git revert <commit-hash>Membuat commit baru yang membalikkan perubahan dari commit tertentu. Aman untuk branch yang sudah di-push.
git revert a1b2c3d
Commit revert baru dibuat, sejarah tetap aman.
git checkout -- <file>Description: Mengembalikan file di working directory ke versi commit terakhir (buang perubahan lokal).
Example:
git checkout -- index.html
Output: Semua modifikasi yang belum di-add hilang.
git checkout -- <file>Mengembalikan file di working directory ke versi commit terakhir (buang perubahan lokal).
git checkout -- index.html
Semua modifikasi yang belum di-add hilang.
git reflogDescription: Menampilkan log semua pergerakan HEAD (penyelamat commit yang 'hilang' setelah reset).
Example:
git reflog
Output: a1b2c3d HEAD@{0}: commit: pesan
...
Anda bisa checkout ke HEAD@{n} untuk mengembalikan.
git reflogMenampilkan log semua pergerakan HEAD (penyelamat commit yang 'hilang' setelah reset).
git reflog
a1b2c3d HEAD@{0}: commit: pesan
...
Anda bisa checkout ke HEAD@{n} untuk mengembalikan.
STASH
Name
Description
Example
Output
git stashDescription: Menyimpan perubahan yang belum di-commit ke dalam tumpukan sementara, membersihkan working directory.
Example:
git stash
Output: Saved working directory and index state WIP on main: a1b2c3d ...
git stashMenyimpan perubahan yang belum di-commit ke dalam tumpukan sementara, membersihkan working directory.
git stash
Saved working directory and index state WIP on main: a1b2c3d ...
git stash popDescription: Menerapkan stash terakhir dan menghapusnya dari tumpukan.
Example:
git stash pop
Output: Perubahan kembali, stash terhapus.
git stash popMenerapkan stash terakhir dan menghapusnya dari tumpukan.
git stash pop
Perubahan kembali, stash terhapus.
git stash listDescription: Menampilkan daftar stash yang tersimpan.
Example:
git stash list
Output: stash@{0}: WIP on main: a1b2c3d ...
stash@{1}: WIP on feature: ...
git stash listMenampilkan daftar stash yang tersimpan.
git stash list
stash@{0}: WIP on main: a1b2c3d ...
stash@{1}: WIP on feature: ...
git stash apply stash@{n}Description: Menerapkan stash tertentu tanpa menghapusnya dari tumpukan.
Example:
git stash apply stash@{1}Output: Perubahan dari stash ke-1 diterapkan, stash tetap ada.
git stash apply stash@{n}Menerapkan stash tertentu tanpa menghapusnya dari tumpukan.
git stash apply stash@{1}Perubahan dari stash ke-1 diterapkan, stash tetap ada.
git stash drop stash@{n}Description: Menghapus stash tertentu dari tumpukan.
Example:
git stash drop stash@{0}Output: Dropped stash@{0}...
git stash drop stash@{n}Menghapus stash tertentu dari tumpukan.
git stash drop stash@{0}Dropped stash@{0}...
TAG
Name
Description
Example
Output
git tagDescription: Menampilkan daftar tag yang ada (biasanya untuk menandai rilis).
Example:
git tag
Output: v1.0.0
v1.1.0
git tagMenampilkan daftar tag yang ada (biasanya untuk menandai rilis).
git tag
v1.0.0
v1.1.0
git tag -a <nama> -m "pesan"Description: Membuat annotated tag (disarankan) yang menyimpan metadata pembuat, tanggal, dan pesan.
Example:
git tag -a v2.0.0 -m "Rilis versi 2.0.0 dengan fitur X"
Output: Tag v2.0.0 tersimpan lengkap dengan informasi.
git tag -a <nama> -m "pesan"Membuat annotated tag (disarankan) yang menyimpan metadata pembuat, tanggal, dan pesan.
git tag -a v2.0.0 -m "Rilis versi 2.0.0 dengan fitur X"
Tag v2.0.0 tersimpan lengkap dengan informasi.
git push origin <tagname>Description: Mengirim tag tertentu ke remote repository.
Example:
git push origin v2.0.0
Output: Tag muncul di GitHub/GitLab.
git push origin <tagname>Mengirim tag tertentu ke remote repository.
git push origin v2.0.0
Tag muncul di GitHub/GitLab.
git push --tagsDescription: Mengirim semua tag lokal ke remote sekaligus.
Example:
git push --tags
Output: Semua tag lokal terkirim.
git push --tagsMengirim semua tag lokal ke remote sekaligus.
git push --tags
Semua tag lokal terkirim.
GITHUB-GITLAB
Name
Description
Example
Output
Pull Request (PR) / Merge Request (MR)Description: Permintaan untuk menggabungkan branch ke branch utama. Tempat code review dan diskusi sebelum merge.
Example:
Buka GitHub → Pull requests → New pull request → pilih branch → Create pull request.
Output: PR tersedia untuk direview oleh tim.
Pull Request (PR) / Merge Request (MR)Permintaan untuk menggabungkan branch ke branch utama. Tempat code review dan diskusi sebelum merge.
Buka GitHub → Pull requests → New pull request → pilih branch → Create pull request.
PR tersedia untuk direview oleh tim.
IssuesDescription: Fitur untuk melacak tugas, bug, atau permintaan fitur. Bisa dikaitkan dengan commit dan PR.
Example:
Klik Issues → New issue → tulis judul dan deskripsi bug/fitur.
Output: Issue #45: Perbaiki validasi email
IssuesFitur untuk melacak tugas, bug, atau permintaan fitur. Bisa dikaitkan dengan commit dan PR.
Klik Issues → New issue → tulis judul dan deskripsi bug/fitur.
Issue #45: Perbaiki validasi email
GitHub Actions (CI/CD)Description: Fitur otomatisasi yang berjalan di cloud GitHub, dikonfigurasi dengan file YAML di .github/workflows.
Example:
name: CI
on: push
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm testOutput: Setiap push menjalankan test otomatis.
GitHub Actions (CI/CD)Fitur otomatisasi yang berjalan di cloud GitHub, dikonfigurasi dengan file YAML di .github/workflows.
name: CI
on: push
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm testSetiap push menjalankan test otomatis.
Fork & CloneDescription: Fork menyalin repositori orang lain ke akun GitHub Anda; lalu clone untuk mengerjakannya secara lokal.
Example:
Klik Fork di GitHub → git clone https://github.com/username-anda/repo.git
Output: Repositori siap dimodifikasi dan bisa di-PR-kan kembali.
Fork & CloneFork menyalin repositori orang lain ke akun GitHub Anda; lalu clone untuk mengerjakannya secara lokal.
Klik Fork di GitHub → git clone https://github.com/username-anda/repo.git
Repositori siap dimodifikasi dan bisa di-PR-kan kembali.
BEST-PRACTICES
Name
Description
Example
Output
Conventional CommitsDescription: Format penamaan commit: <type>(<scope>): <description>. Contoh: feat(auth): add login.
Example:
feat: tambah fitur pencarian fix: perbaiki bug pagination chore: update dependensi
Output: Riwayat commit terstruktur, mudah membuat changelog otomatis.
Conventional CommitsFormat penamaan commit: <type>(<scope>): <description>. Contoh: feat(auth): add login.
feat: tambah fitur pencarian fix: perbaiki bug pagination chore: update dependensi
Riwayat commit terstruktur, mudah membuat changelog otomatis.
Git Flow / Trunk-Based DevelopmentDescription: Git Flow: branch main, develop, feature/*, hotfix/*. Trunk-Based: langsung ke main dengan feature flag.
Example:
Git Flow: buat branch feature/login dari develop, merge kembali ke develop. Trunk-Based: commit langsung ke main di balik feature flag.
Output: Strategi branching sesuai skala tim dan frekuensi rilis.
Git Flow / Trunk-Based DevelopmentGit Flow: branch main, develop, feature/*, hotfix/*. Trunk-Based: langsung ke main dengan feature flag.
Git Flow: buat branch feature/login dari develop, merge kembali ke develop. Trunk-Based: commit langsung ke main di balik feature flag.
Strategi branching sesuai skala tim dan frekuensi rilis.
Pull Request Kecil & SeringDescription: Setiap PR sebaiknya hanya berisi 1 perubahan logis (fitur, perbaikan) agar mudah direview.
Example:
PR #1: Tambah model User. PR #2: Tambah endpoint register.
Output: Proses review cepat, risiko konflik rendah.
Pull Request Kecil & SeringSetiap PR sebaiknya hanya berisi 1 perubahan logis (fitur, perbaikan) agar mudah direview.
PR #1: Tambah model User. PR #2: Tambah endpoint register.
Proses review cepat, risiko konflik rendah.
Periksa Sebelum Push (Pre-commit Hooks)Description: Gunakan Husky atau pre-commit untuk menjalankan linter dan formatter sebelum commit.
Example:
npx husky add .husky/pre-commit "npm run lint && npm run format"
Output: Kode selalu rapi dan sesuai standar sebelum dikirim.
Periksa Sebelum Push (Pre-commit Hooks)Gunakan Husky atau pre-commit untuk menjalankan linter dan formatter sebelum commit.
npx husky add .husky/pre-commit "npm run lint && npm run format"
Kode selalu rapi dan sesuai standar sebelum dikirim.
Commit yang AtomikDescription: Satu commit hanya mengerjakan satu hal. Jangan campur aduk perbaikan bug dan penambahan fitur.
Example:
Commit 1: perbaiki bug validasi Commit 2: tambahkan field baru pada form
Output: Memudahkan revert, review, dan pemahaman riwayat.
Commit yang AtomikSatu commit hanya mengerjakan satu hal. Jangan campur aduk perbaikan bug dan penambahan fitur.
Commit 1: perbaiki bug validasi Commit 2: tambahkan field baru pada form
Memudahkan revert, review, dan pemahaman riwayat.
README dan DokumentasiDescription: Setiap repositori sebaiknya memiliki README.md yang menjelaskan cara setup, penggunaan, dan kontribusi.
Example:
README berisi judul proyek, badge CI, instruksi instalasi, contoh penggunaan, lisensi.
Output: Orang baru langsung bisa menjalankan proyek.
README dan DokumentasiSetiap repositori sebaiknya memiliki README.md yang menjelaskan cara setup, penggunaan, dan kontribusi.
README berisi judul proyek, badge CI, instruksi instalasi, contoh penggunaan, lisensi.
Orang baru langsung bisa menjalankan proyek.