Lewati ke konten

Perpustakaan skenario

Mulai dari sini

Setiap skenario adalah skrip perintah, bukan snapshot — dijalankan ulang saat dibuka, jadi keadaannya tidak mungkin berbeda dari apa yang perintahnya benar-benar lakukan. Semuanya berhenti tepat sebelum perintah yang menarik, dan menyebutkan namanya.

  • Branch fitur tertinggal di belakang main

    feature-behind-main

    Bentuk paling umum. Setelah rebase, perhatikan hash setiap commit fitur berubah — bukan karena isinya berubah, tapi karena parent-nya berubah, dan parent ikut masuk ke hash.

    Lalu coba rebase main Dua commit fitur akan ditulis ulang jadi objek baru; yang lama tetap di rak, memudar.

    Buka di sandbox
  • Riwayat berantakan yang mau dirapikan

    messy-history

    Tiga commit kecil yang sebaiknya jadi satu. Rebase interaktif menggabungkannya — dan menghasilkan objek baru, bukan mengubah yang lama.

    Lalu coba open the interactive rebase panel Ubah tiga langkah terakhir jadi pick + squash + squash.

    Buka di sandbox
  • Branch yang sudah dipublikasikan

    published-branch

    Di sini rebase adalah pilihan yang salah. Commit yang sudah dipegang orang lain tidak boleh ditulis ulang — pakai revert, yang menambah riwayat alih-alih mengubahnya.

    Lalu coba revert HEAD~1 Bandingkan dengan `reset --hard HEAD~2`: yang satu aman untuk kolaborator, yang lain tidak.

    Buka di sandbox
  • Reset --hard yang tidak disengaja

    accidental-hard-reset

    Situasi yang bikin panik. Commit-nya tidak ke mana-mana: masih di store, masih disebut reflog, dan bisa diambil kembali dengan satu perintah.

    Lalu coba reset --hard HEAD@{1} Lihat panel reflog: commit yang “hilang” ada di sana, memudar tapi utuh.

    Buka di sandbox
  • Rebase branch yang sudah di-push

    force-push-danger

    Branch ini sudah ada di origin. Rebase menulis ulang commit-nya, jadi push berikutnya ditolak — dan memaksanya membuat commit lama di origin tidak lagi ditunjuk apa pun. Rekan yang sudah fetch tetap memilikinya; yang clone hari ini tidak akan pernah melihatnya.

    Lalu coba push origin main Akan ditolak, dan pesannya menyebut commit mana yang akan terlantar. Bandingkan dengan `push origin main --force`, lalu lihat panel origin.

    Buka di sandbox
  • Rebase yang berkonflik

    conflicting-rebase

    Dua branch mengubah baris yang sama. Rebase berhenti di tengah tanpa menggerakkan ref dan tanpa membuat objek — resolusi Anda yang menentukan hash commit hasilnya.

    Lalu coba rebase main Selesaikan konflik di panel working tree, `add konfig.txt`, lalu `rebase --continue`.

    Buka di sandbox