29 poin oleh alstjr7375 2023-05-04 | Belum ada komentar. | Bagikan ke WhatsApp

Saya telah mengumpulkan berbagai cara untuk memanfaatkan Git dengan lebih efisien.

  1. Struktur repo
    • Git adalah sistem kontrol versi terdistribusi, sehingga bisa disusun dalam berbagai model seperti terpusat, gaya GitHub/GitLab, maupun hierarkis
  2. 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
  3. 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 baik
      • git prev dan git next: memudahkan checkout ke unit sebelumnya/berikutnya
      • git sync: rebase ke Main
      • git move: dapat memindahkan commit ke lokasi yang diinginkan
      • git restack: memulihkan urutan riwayat commit yang rusak karena rebase atau commit --amend dan sebagainya
      • git undo: dapat membatalkan
  4. 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-pull adalah perintah untuk membuat pull request
      • Dengan git send-mail patch bisa dikirim lewat email, dan dengan git am patch bisa diterapkan
  5. 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.

Belum ada komentar.