Menuju Workflow Git yang Lebih Baik
(black7375.tistory.com)Saya telah mengumpulkan berbagai cara untuk memanfaatkan Git dengan lebih efisien.
- Struktur repo
- Git adalah sistem kontrol versi terdistribusi, sehingga bisa disusun dalam berbagai model seperti terpusat, gaya GitHub/GitLab, maupun hierarkis
- Struktur branch
- GitHub Flow: menggunakan Main, lalu membuat branch fitur atau bug, menerima umpan balik, kemudian menggabungkannya
- Git Flow: lebih cocok untuk pengembangan tradisional daripada deployment yang sering
- Buat branch Feature lalu gabungkan ke branch Develop
- Branch Develop yang sudah cukup matang akan membuat branch Release(Stage), hanya menerima perbaikan bug, lalu nantinya digabungkan ke Develop dan Master
- Saat siap dirilis, gabungkan ke branch Master, dan setelah itu hanya hotfix
- GitLab Flow: bentuk tengah antara Git Flow yang kompleks dan GitHub Flow yang terlalu sederhana
- Alih-alih branch Release yang dipertahankan sementara pada Git Flow, gunakan branch Stage yang dipertahankan terus-menerus
- Hotfix diterapkan ke Production dan Stage, sementara perbaikan bug diterapkan ke Stage dan Develop
- Perforce Stream: cocok ketika harus mengelola beberapa rilis
- Jika bug diperbaiki di Release, perubahan itu disebarkan ke Main-Develop
- Jika fitur dibuat di Develop, hilangkan konflik lalu terapkan ke Main
- Berbasis trunk: upaya menggunakan Main(Master) dengan lebih efisien, umumnya dipakai perusahaan big tech
- Main dipertahankan lama, dan di branch rilis tidak dilakukan perbaikan bug secara terpisah
- Fitur digabungkan dalam keadaan nonaktif menggunakan flag agar kode selalu tetap terbaru
- Commit
- Konvensi: biasanya banyak yang memakai konvensi Angular, tetapi lewat kesepakatan tim bisa juga memakai emoji dan sebagainya
- Unit: sebaiknya dilakukan dalam unit sekecil mungkin, tetapi tetap perlu kesepakatan tim tentang apa yang dimaksud unit minimum
- Perubahan bisa dipecah menjadi Hunk untuk staging yang lebih rinci
- Akan lebih nyaman jika perubahan dapat dibandingkan pada tingkat Delta
- Commit spekulatif dan riwayat linear: cara untuk sering melakukan commit agar konteks tetap terjaga sambil mempertahankan riwayat commit yang linear
- Simpan setiap kali perlu menyimpan pekerjaan, seperti saat menggunakan stash atau mencoba prototipe
- Checkout ke tempat yang diperlukan, terus lakukan commit, lalu pertahankan tetap linear melalui rebase
- Akan lebih mudah jika menggunakan tool git-branchless
git sl: melacak branch anonim dan memvisualisasikan riwayat commit dengan baikgit prevdangit next: memudahkan checkout ke unit sebelumnya/berikutnyagit sync: rebase ke Maingit move: dapat memindahkan commit ke lokasi yang diinginkangit restack: memulihkan urutan riwayat commit yang rusak karenarebaseataucommit --amenddan sebagainyagit undo: dapat membatalkan
- Merge
- Patch stack: metode meninjau dengan memecah menjadi fitur[1/3], fitur[2/3], fitur[3/3]
- Konflik kelas satu: Jujutsu yang kompatibel dengan Git mencatat konflik ke dalam commit, sehingga konflik yang pernah diselesaikan cenderung tidak sering muncul lagi di kemudian hari
- 3 Way Diff: pada Jujusu, saat konflik terjadi Base-Ours ditampilkan sebagai diff, sementara Theirs ditampilkan sebagai snapshot, sehingga intuitif. Namun bisa juga ada kebutuhan untuk melihat penyorotan sintaks IDE/editor atau diff Base-Their
- Konflik biner: Git membiarkan pengguna menangani sendiri saat terjadi konflik pada file biner, tetapi secara pribadi penulis membuat tool sederhana agar file Base dan Their dapat dibuat
- Patch dan email: pengenalan terhadap cara merge yang lebih tradisional(?)
git request-pulladalah perintah untuk membuat pull request- Dengan
git send-mailpatch bisa dikirim lewat email, dan dengangit ampatch bisa diterapkan
- Metode pengelolaan lainnya
- Worktree: Git history tetap dibagikan, tetapi seperti branch SVN, hanya file kerja yang di-checkout ke beberapa lokasi sehingga beberapa pekerjaan bisa dilakukan secara bersamaan
- Git LFS: cara mengelola file berukuran besar
- Partial clone dan partial checkout: lakukan clone sebagian untuk mengurangi waktu unduh, lalu checkout sebagian agar hanya direktori yang diinginkan yang dikerjakan
- Scalar: memudahkan pengelolaan repositori yang sangat besar berkat upaya Microsoft
Belum ada komentar.