Days
Hours
Minutes
Seconds

Promo Grand Opening

15% OFF

Khusus Pelanggan Baru

  • Home /
  • Blog /
  • GIT /
  • Tutorial Git #6: Membatalkan Perubahan dalam Git (git restore, git reset, git revert)

Tutorial Git #6: Membatalkan Perubahan dalam Git (git restore, git reset, git revert)

 

Salah satu alasan utama menggunakan Git adalah kemampuannya untuk mengelola riwayat perubahan. Ini berarti jika Anda melakukan kesalahan, Git memiliki berbagai “tombol undo” untuk membantu Anda kembali ke jalur yang benar. Namun, ada beberapa cara untuk “membatalkan” di Git, dan masing-masing memiliki tujuan serta efek yang berbeda.

Memahami perbedaan antara git restore, git reset, dan git revert adalah krusial untuk menghindari hilangnya pekerjaan atau menyebabkan masalah dalam proyek kolaboratif. Mari kita pelajari satu per satu.


 

1. Membatalkan Perubahan di Working Directory (git restore)

 

Ini adalah pembatalan paling “ringan”. Perintah git restore digunakan untuk membuang perubahan yang belum di-stage di Working Directory Anda. Ini seperti membuang draf yang salah sebelum Anda menyimpannya.

Skenario: Anda membuat perubahan pada file index.html, tetapi Anda menyadari bahwa perubahan tersebut salah dan ingin kembali ke kondisi file saat terakhir kali di-commit (atau di-stage).

  1. Ubah file: Buka index.html dan tambahkan beberapa teks acak, misalnya:
    HTML

    <h1>Selamat Datang di Git!</h1>
    <p>Ini adalah teks acak yang salah.</p>
    
  2. Cek status:
    Bash

    git status
    

    Anda akan melihat index.html terdaftar di bawah “Changes not staged for commit”.

  3. Batalkan perubahan: Gunakan git restore untuk mengembalikan index.html ke versi di Staging Area (atau commit terakhir jika tidak ada di staging area).
    Bash

    git restore index.html
    

    Jika Anda menjalankan git status lagi, index.html tidak akan lagi muncul sebagai file yang diubah. Isi file index.html Anda kini kembali ke kondisi terakhir yang di-commit.

    • Catatan: Untuk Git versi lama (sebelum 2.23), fungsi ini dilakukan dengan git checkout -- index.html. Namun, git restore adalah cara yang lebih modern dan jelas.

 

2. Membatalkan Perubahan di Staging Area (git restore --staged atau git reset)

 

Bagaimana jika Anda sudah terlanjur git add sebuah file ke Staging Area, tetapi kemudian memutuskan untuk tidak menyertakannya dalam commit berikutnya?

Skenario: Anda menambahkan file style.css ke Staging Area, tetapi ingin mengeluarkannya sebelum commit.

  1. Buat dan stage file:
    Bash

    echo "body { color: red; }" > style.css
    git add style.css
    
  2. Cek status:
    Bash

    git status
    

    Anda akan melihat style.css terdaftar di bawah “Changes to be committed”.

  3. Batalkan staging:
    Bash

    git restore --staged style.css
    # Atau, untuk Git versi lama atau sebagai alternatif:
    # git reset HEAD style.css
    

    Sekarang, style.css akan kembali ke status “Untracked files” (jika baru) atau “Changes not staged for commit” (jika sudah ada sebelumnya dan diubah). Perubahan Anda di Working Directory tetap ada, hanya saja sudah tidak di Staging Area.


 

3. Mengubah Riwayat Commit (git reset --hard / --soft)

 

git reset adalah perintah yang lebih kuat dan berbahaya karena mengubah riwayat commit Anda. Gunakan ini dengan sangat hati-hati, terutama jika Anda bekerja dalam tim, karena ini bisa menyebabkan konflik serius.

Perintah ini akan memindahkan HEAD (penunjuk ke commit saat ini) ke commit yang lebih lama.

 

git reset --soft <commit-hash>

 

  • Memindahkan HEAD ke commit target.
  • Menyimpan semua perubahan dari commit yang dibatalkan di Staging Area Anda.
  • Commit yang dibatalkan tidak lagi ada di riwayat.

Skenario: Anda melakukan commit terbaru dan menyadari ada yang salah, tetapi Anda ingin menyimpan perubahan tersebut untuk di-commit ulang nanti.

  1. Lakukan beberapa commit baru (misalnya, commit A dan commit B).
  2. Dapatkan hash dari commit A (misal: abcdef).
  3. Jalankan:
    Bash

    git reset --soft abcdef
    

    HEAD kini menunjuk ke commit A. Semua perubahan dari commit B sekarang ada di Staging Area Anda, siap untuk di-commit ulang dengan pesan yang lebih baik.

 

git reset --mixed <commit-hash> (Default)

 

  • Memindahkan HEAD ke commit target.
  • Memindahkan perubahan dari commit yang dibatalkan ke Working Directory Anda (tidak di-stage).
  • Commit yang dibatalkan tidak lagi ada di riwayat.

Skenario: Mirip dengan --soft, tetapi Anda juga ingin “membatalkan staging” perubahan dari commit yang dibatalkan.

  1. Lakukan beberapa commit baru.
  2. Dapatkan hash dari commit sebelum yang ingin dibatalkan.
  3. Jalankan:
    Bash

    git reset --mixed abcdef
    # Atau hanya: git reset abcdef (karena --mixed adalah default)
    

    HEAD menunjuk ke commit A. Perubahan dari commit B sekarang ada di Working Directory Anda (belum di-stage).

 

git reset --hard <commit-hash> (Sangat Berbahaya!)

 

  • Memindahkan HEAD ke commit target.
  • Membuang semua perubahan di Staging Area dan Working Directory Anda yang belum di-commit.
  • Data bisa hilang secara permanen!
  • Commit yang dibatalkan tidak lagi ada di riwayat.

Skenario: Anda benar-benar yakin ingin membuang semua perubahan terbaru dan kembali bersih ke kondisi commit sebelumnya.

  1. Pastikan Working Directory Anda bersih atau Anda tidak keberatan kehilangan semua perubahan yang belum di-commit.
  2. Dapatkan hash dari commit yang ingin Anda tuju.
  3. Jalankan:
    Bash

    git reset --hard abcdef
    

    Seluruh kondisi proyek Anda akan kembali persis seperti pada commit abcdef. Gunakan ini hanya jika Anda 100% yakin.


 

4. Membatalkan Commit dengan Aman (git revert)

 

git revert adalah cara paling aman untuk “membatalkan” commit yang sudah ada, terutama dalam proyek kolaboratif. Ini tidak mengubah riwayat commit yang sudah ada, melainkan membuat commit baru yang fungsinya “membalikkan” perubahan dari commit yang Anda targetkan.

Skenario: Anda melakukan commit yang salah dan sudah di-push ke repository remote, sehingga banyak orang lain yang mungkin sudah mendasarkan pekerjaan mereka pada commit tersebut.

  1. Buat commit yang ingin Anda batalkan (misalnya, commit C dengan hash fedcba).
  2. Jalankan:
    Bash

    git revert fedcba
    

    Git akan membuka editor teks untuk Anda menulis pesan commit baru untuk revert ini. Pesan default biasanya sudah cukup informatif. Simpan dan tutup editor.

Perbedaan Utama dengan git reset:

  • git reset menghapus commit dari riwayat (mengubah riwayat). Tidak boleh digunakan pada commit yang sudah di-push ke remote.
  • git revert membuat commit baru yang membatalkan efek commit lama (tidak mengubah riwayat). Ini aman untuk commit yang sudah di-push ke remote.

 

Kesimpulan

 

Memilih metode pembatalan yang tepat sangatlah penting:

  • git restore <file>: Untuk membuang perubahan yang belum di-stage.
  • git restore --staged <file>: Untuk mengeluarkan file dari Staging Area.
  • git reset: Untuk mengubah riwayat commit lokal Anda. Hati-hati, terutama --hard! Jangan gunakan pada commit yang sudah di-push ke remote jika bekerja dalam tim.
  • git revert: Untuk membatalkan efek commit lama dengan membuat commit baru. Ini adalah cara yang aman dan direkomendasikan untuk commit yang sudah di-push ke remote.

Menguasai perintah-perintah ini akan membuat Anda lebih percaya diri dalam mengelola proyek Git Anda. Pada tutorial berikutnya, kita akan membahas Branching secara lebih mendalam, fitur yang menjadi tulang punggung kolaborasi di Git.

Wawasan Terbaru

Gemini_Generated_Image_wfw5uwwfw5uwwfw5
Mengenal Dunia Grafis: Dari Piksel Hingga Vektor, Kekuatan Visual di Era Digital
Gemini_Generated_Image_b6dimfb6dimfb6di
Mengenal Foundation: Kerangka Kerja Front-End Profesional untuk Web Responsif
Gemini_Generated_Image_sx3ztpsx3ztpsx3z
CSS
Mempercantik Website dengan CSS: Seniman di Balik Tampilan Web 🎨
Gemini_Generated_Image_e013qke013qke013
Mengenal HTML: Fondasi dari Setiap Halaman Website 🌐
Gemini_Generated_Image_ldki4nldki4nldki
Menyelami Dunia Coding: Seni Berbicara dengan Komputer
Gemini_Generated_Image_dpvliydpvliydpvl
Menguasai GIT: Fondasi Penting dalam Dunia Pengembangan Perangkat Lunak
Gemini_Generated_Image_sqcib9sqcib9sqci
Tutorial Python #12: Mengenal Jenis-jenis Operator dalam Python
Gemini_Generated_Image_o1bw3do1bw3do1bw
Memahami Tipe Data Dictionary dalam Python
Gemini_Generated_Image_ko4ixfko4ixfko4i
Mengenal Tipe Data Set dalam Python
Gemini_Generated_Image_1xop7m1xop7m1xop
Tuple dalam Python: Pengenalan dan Tutorial

Wawasan Serupa

Gemini_Generated_Image_dpvliydpvliydpvl
Gemini_Generated_Image_b27jsob27jsob27j
Gemini_Generated_Image_spl7gsspl7gsspl7

Ceritakan Detail Proyekmu

Mulai dari 30K aja, solusi IT kamu langsung jalan tanpa drama.

Kata Mereka Tentang Solusi Coding

Dipercaya oleh lebih dari 200++ client untuk menyelesaikan proyeknya dengan total 250++ proyek dari berbagai jenis proyek