Learn About Command Git
Tugas kuliah untuk belajar tentang command git
1. Persiapan Awal
Anda baru saja menginstal Git di komputer baru. Sebelum mulai mengerjakan proyek apa pun, Anda harus memberi tahu Git siapa nama dan alamat email Anda agar setiap kontribusi kode tercatat atas nama Anda.
config --global mengatur identitas Anda untuk semua proyek Git di komputer tersebut. Identitas ini akan menempel secara permanen pada setiap commit yang Anda buat.2. Memulai Proyek Baru dari Nol
Anda baru saja membuat folder proyek lokal baru dan ingin mulai melacak perubahan menggunakan Git, lalu menyimpan versi pertamanya.
init mengubah folder biasa menjadi repositori Git. add . memasukkan semua file ke staging area, dan commit menyimpan perubahan tersebut secara permanen di riwayat lokal.3. Menghubungkan Lokal ke Server (Remote)
Proyek lokal Anda sudah siap, dan sekarang Anda ingin mengunggahnya ke GitHub/GitLab agar aman dan bisa diakses tim.
git push.4. Bergabung dengan Proyek yang Sudah Ada
Anda baru saja masuk ke tim baru dan perlu mengambil source code proyek yang sudah berjalan ke laptop Anda.
clone mengunduh seluruh repositori beserta riwayat commitnya. status digunakan untuk mengecek di branch mana Anda berada dan apakah ada perubahan.
5. Mengerjakan Fitur Baru secara Terisolasi
Manajer proyek meminta Anda membuat fitur "Login". Anda tidak ingin merusak kode utama selama proses pembuatan fitur ini.
lalu di dalam branch feature/login, Anda membuat halaman login
switch -c (atau checkout -b) membuat branch baru sekaligus memindahkan Anda ke sana. Pekerjaan Anda kini aman dan terpisah dari branch utama. Anda bisa melihat gambar ini untuk lebih jelasnya.
6. Menyimpan Pekerjaan yang Belum Selesai Sementara
Anda sedang mengerjakan fitur, tiba-tiba ada bug darurat di branch utama yang harus segera diperbaiki. Pekerjaan Anda saat ini belum siap untuk di commit.
lalu Anda memperbaiki bug di branch main

setelah selesai memperbaiki bug, Anda switch kembali ke branch feature/login

stash menyimpan perubahan sementara yang belum di commit ke dalam clipboard Git, sehingga working directory menjadi bersih. stash pop mengembalikan pekerjaan tersebut.7. Mengambil Pembaruan Terbaru dari Tim
Teman satu tim Anda baru saja menyelesaikan fitur keranjang belanja dan mengunggahnya. Anda perlu menyinkronkan kode lokal Anda dengan kode terbaru.
fetch mengambil metadata perubahan dari server tanpa mengubah kode lokal. pull mengunduh perubahan tersebut dan langsung menggabungkannya ke branch Anda saat ini.
8. Menggabungkan Fitur ke Branch Utama
Fitur "Login" Anda sudah selesai dan diuji. Sekarang waktunya menggabungkan fitur tersebut ke branch utama.
main, memastikan main adalah versi paling baru, lalu menjalankan merge untuk menyatukan pekerjaan di branch fitur Anda ke dalam branch utama.
9. Memilih Sebagian Perubahan (Patching)
Anda mengubah 5 file, tapi hanya ingin meng commit 2 file pertama untuk commit ini karena berkaitan dengan fitur A, sedangkan 3 lainnya untuk fitur B.
add ., kita menyebutkan nama file secara spesifik agar commit lebih terorganisir dan memiliki konteks yang jelas.
10. Memperbaiki Typo di Pesan commit Terakhir
Anda baru saja menekan enter untuk commit, lalu menyadari ada salah ketik yang fatal di pesan commitnya, atau ada satu file yang terlupa dimasukkan.
--amend akan menimpa commit terakhir Anda dengan perubahan baru dan/atau pesan baru tanpa membuat commit tambahan di riwayat.11. Membatalkan Perubahan File yang Belum Di commit
Anda bereksperimen dengan suatu file kode, dan eksperimen itu gagal total. Anda ingin mengembalikan file tersebut persis seperti kondisi pada commit terakhir.
atau
restore akan membuang semua perubahan yang belum masuk staging pada file tersebut dan mengembalikannya ke kondisi bersih semula.12. Membatalkan commit yang Sudah Terlanjur Dibagikan
Anda sudah melakukan push ke server, tapi ternyata kode tersebut membuat aplikasi crash. Anda harus membatalkannya tanpa merusak riwayat commit teman setim.
revert membuat satu commit baru yang berisi kebalikan dari commit yang bermasalah. Ini adalah cara teraman untuk rollback kode yang sudah di-push.13. Mereset Kode secara Ekstrem (Hard Reset)
Anda sedang bekerja di branch eksperimental dan semua kodingan hari ini berantakan. Anda ingin membuang semuanya dan kembali ke commit tertentu di masa lalu secara permanen.
--hard sangat destruktif. Ini akan menghapus semua file dan commit yang terjadi setelah ID commit yang dituju. Gunakan hanya jika Anda yakin seratus persen.14. Menyelesaikan Konflik Penggabungan (Merge Conflict)
Saat Anda melakukan git pull, ternyata Anda dan teman setim Anda mengedit baris kode yang persis sama. Git bingung dan meminta Anda menyelesaikannya.
Hapus semua tanda aneh tersebut (<<<<<<<, =======, >>>>>>>) dan pilih kode mana yang ingin dipertahankan, atau gabungkan keduanya. Misalnya, Anda mengeditnya menjadi:
Setelah itu, kita perlu menambahkan file yang sudah diperbaiki ke staging area dan melakukan commit:
add, lalu melanjutkan dengan commit.15. Mengambil Satu commit Spesifik (Cherry-Pick)
Teman Anda membuat perbaikan bug di branch lain. Anda butuh perbaikan itu sekarang di branch Anda tanpa harus menggabungkan seluruh fitur miliknya.
cherry-pick mengambil persis satu commit dari tempat lain dan menempelkannya (menduplikasinya) ke branch Anda saat ini.16. Merapikan Riwayat commit sebelum Merge (Rebase)
Anda ingin memperbarui branch fitur Anda dengan perubahan terbaru dari main, tetapi Anda ingin riwayat commitnya tetap linier dan rapi tanpa commit merge yang berantakan.
rebase mengambil commit commit Anda, menyimpannya sementara, menarik versi terbaru dari main, lalu meletakkan kembali commit Anda satu per satu di ujung paling atas.
17. Menggabungkan Banyak commit Kecil (Squash)
Saat mengerjakan fitur, Misal Anda membuat 3 commit kecil. Anda ingin menggabungkannya menjadi 1 commit solid sebelum diserahkan.

Jalankan perintah rebase mundur sebanyak 3 commit dari titik saat ini HEAD:
Setelah itu, Terminal Anda akan berubah menjadi teks editor, Ubah kata pick menjadi squash pada commit yang ingin dilebur ke commit di atasnya. Biarkan commit paling atas tetap pick

Setelah editor pertama ditutup, Git akan otomatis membuka editor kedua. Di sini Git menggabungkan semua pesan commit lama Anda dan meminta Anda menuliskan satu pesan commit baru untuk hasil gabungan ini.
Hapus atau beri tanda # pada pesan commit yang lama, lalu sisakan atau tulis pesan baru yang rapi, misalnya:

Terakhir, simpan dan tutup editor. Git akan menggabungkan commit tersebut. Sekarang Anda bisa mendorong perubahan ini ke remote:
-i) memungkinkan kita memanipulasi riwayat commit (menggabungkan, menghapus, atau mengubah urutan) sebelum dipublikasikan ke branch utama.18. Mencari Tahu Siapa Penulis Baris Kode (Blame)
Anda menemukan fungsi yang aneh dan menyebabkan bug, Anda butuh bertanya kepada orang yang menulis baris tersebut mengapa kodenya ditulis seperti itu.
blame akan menampilkan setiap baris dalam file beserta nama pembuat, tanggal, dan ID commit kapan baris tersebut terakhir kali dimodifikasi.19. Menandai Versi Rilis Baru (Tagging)
Aplikasi Anda sudah siap diluncurkan untuk versi 2.0.0. Anda ingin memberikan penanda permanen di riwayat Git.
tag memberikan nama pada titik commit spesifik. Berguna untuk rilis produksi dan sering digunakan oleh sistem CI/CD untuk memicu proses deployment.20. Membersihkan Branch yang Sudah Tidak Terpakai
Setelah berbulan-bulan, tumpukan branch fitur yang sudah di-merge memenuhi daftar Anda. Waktunya melakukan bersih-bersih agar repositori kembali rapi.
-d menghapus branch di komputer lokal Anda (hanya aman jika sudah di-merge). prune membersihkan referensi branch remote yang ternyata sudah dihapus di server (GitHub/GitLab).