Latihan dalam bentuk proyek menuntut panggung yang jelas, dan modul ini membangunnya terlebih dahulu: satu repository pusat, dua anggota dengan salinan masing-masing, peran yang dibagi, dan lini masa pekerjaan. Topik ini menyiapkan seluruh panggung tersebut dengan perintah yang sudah dikenal, sehingga topik Alur kerja lengkap dan topik Latihan bencana berfokus pada jalannya alur kerja dan pemulihannya, bukan pada penyiapan.
Peran dan panggung latihan#
Latihan ini meniru tim dua orang dengan pembagian peran yang sederhana. Budi bekerja sebagai pengembang yang mengerjakan fitur pada branch pekerjaannya, sedangkan Citra berperan sebagai peninjau sekaligus pemegang branch utama yang menggabungkan pekerjaan dan melepaskan rilis. Pembagian ini cukup untuk melatih seluruh titik alur kerja tim, yaitu branch, push, review, merge, dan tag rilis.
Panggungnya terdiri atas satu repository pusat berbentuk bare dan dua salinan kerja, dan bentuk ini meniru mekanika repository di layanan hosting secara utuh. Seluruh tukar-menukar commit berjalan melalui pusat, sehingga kebiasaan yang terlatih di sini berlaku persis ketika pusatnya pindah ke layanan hosting.
Membangun pusat dan dua salinan kerja#
Siapkan pusat dengan satu commit dasar yang dibuat oleh penanggung jawab awal proyek, lalu salin untuk kedua anggota.
# tanggal commit ditetapkan agar keluaran contoh dapat direproduksi secara persis
export GIT_AUTHOR_DATE="2026-11-01T09:00:00+07:00"
export GIT_COMMITTER_DATE="2026-11-01T09:00:00+07:00"rm -rf /tmp/lab-pusat.git /tmp/lab-seed /tmp/lab-budi /tmp/lab-citra
git init --bare /tmp/lab-pusat.git
git init -b main /tmp/lab-seed
cd /tmp/lab-seed
git config user.name "Budi"
git config user.email "[email protected]"
printf "Aplikasi laporan.\n" > app.md
git add app.md
git commit -m "Kerangka aplikasi"
git remote add origin /tmp/lab-pusat.git
git push -q -u origin main
cd /tmp
git clone -q lab-pusat.git lab-budi
git clone -q lab-pusat.git lab-citra
git -C lab-budi log --oneline
git -C lab-citra branch -rhint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /tmp/lab-pusat.git/
Initialized empty Git repository in /tmp/lab-seed/.git/
[main (root-commit) a96f061] Kerangka aplikasi
1 file changed, 1 insertion(+)
create mode 100644 app.md
warning: remote HEAD refers to nonexistent ref, unable to checkout
warning: remote HEAD refers to nonexistent ref, unable to checkout
fatal: your current branch 'master' does not have any commits yet
origin/mainFolder seed hanya dipakai untuk mengisi pusat dan tidak lagi diperlukan, sedangkan lab-budi dan lab-citra menjadi dua pos kerja. Identitas masing-masing disetel lokal pada salinannya, dan pengecekan singkat menunjukkan keduanya menunjuk pusat yang sama dengan branch pelacak yang siap.
cd /tmp/lab-citra
git config user.name "Citra"
git config user.email "[email protected]"
cd /tmp/lab-budi
git config user.name "Budi"
git config user.email "[email protected]"
git statusOn branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)Menyesuaikan lingkungan latihan#
Dua penyetelan kecil membuat latihan tetap mudah diikuti pada layar yang sama. Yang pertama adalah identitas lokal tiap salinan, karena seluruh commit pada contoh ditulis oleh dua orang berbeda, dan metadata penulis itulah yang dibaca git log serta git blame. Yang kedua adalah alias perintah, yang memangkas pengetikan pada latihan yang memanggil perintah yang sama berulang-ulang.
git config alias.lg "log --oneline --graph --decorate --all"
git lg* a96f061 (origin/main) Kerangka aplikasiAlias lg pada contoh menampilkan seluruh penunjuk beserta grafisnya dalam satu perintah pendek, dan alias tersimpan pada konfigurasi lokal sehingga setiap salinan dapat memilikinya sendiri. Alias tidak pernah menggantikan perintah penuhnya pada pembelajaran, tetapi menjadi singkatan yang sah setelah perintah aslinya dikenal, dan penyetelan ini berlaku penuh pada dua topik penutup.
Lini masa pekerjaan#
Lini masa latihan dibagi menjadi tiga tahap yang masing-masing memuat satu tujuan latihan, dan seluruhnya dikerjakan pada dua topik penutup.
| Tahap | Pekerjaan | Peran | Materi yang dilatih |
|---|---|---|---|
| Satu | Fitur laporan pada branch pekerjaan | Budi | branch, commit, push |
| Dua | Tinjauan dan penggabungan | Citra | review, merge, push |
| Tiga | Rilis bertag | Citra | tag beranotasi, push tag |
Lini masa ini sengaja dibuat pendek agar seluruhnya terlihat pada satu layar riwayat ketika alurnya tuntas. Keputusan yang sama berlaku pada proyek nyata, yaitu tahapan yang pendek dan terlihat lebih mudah dijaga daripada tahapan besar yang tumpang tindih, dan commit atomik pada setiap tahap menjaga setiap titik pemulihannya tetap bermakna.
Ringkasan#
- Panggung latihannya adalah satu repository pusat bare dengan dua salinan kerja milik dua peran yang berbeda.
- Budi berperan sebagai pengembang fitur, dan Citra sebagai peninjau sekaligus pemegang rilis.
- Identitas tiap salinan disetel lokal, dan branch pelacak siap sejak clone.
- Lini masa tiga tahap menuntun latihan alur lengkap dan latihan bencana.
Referensi#
- Git Branching - Remote Branches — Pro Git — bab Pro Git tentang branch pada repository pusat dan salinan kerja.
- Distributed Git - Distributed Workflows — Pro Git — bab Pro Git tentang alur kerja tim terdistribusi.