Reset Commit
Reset Commmit
Sebelumnya kita sudah tahu membatalkan perubahan, namun bagaimana jika ternyata perubahan sudah terlanjur kita commit ke Repository?
Untuk hal seperti itu, kita bisa melakukan reset commit.
Reset commit merupakan mekanisme dimana kita menggeser HEAD pointer ke posisi commit yang kita mau, artinya commit selanjutnya akan dilakukan pada posisi HEAD baru.
Untuk melakukan reset commit, kita bisa gunakan perintah : git reset <mode> hash
Ada beberapa mode pengaturan melakukan reset commit.
Diagram Reset Commit
Mode Git Reset
--soft, memindahkan HEAD pointer, namun tidak melakukan perubahan apapun di Staging Index dan Working Directory
--mixed (default), memindahkan HEAD pointer, mengubah Staging Index menjadi sama seperti dengan Repository, namun tidak mengubah apapun di Working Directory
--hard, memindahkan HEAD pointer, dan mengubah Staging Index dan Working Directory sehingga sama dengan Repository
Git Log
a8ea14d (HEAD -> master) Menghapus file3.txt
171669f Melakukan Perubaha di file1.txt dan file2.txt
6ccf55a Melakukan Perubahan di file3.txt
270669f Menambah file3.txt
69d1679 Menambah file2.txt
6aec017 Menambah file1.txt
Git Reset Soft
git reset --soft a8ea14d
Rewrite Riwayat Commit
Jika kita melakukan reset, namun kita belum membuat commit baru, Kita masih bisa kembali maju lagi ke commit yang paling baru.
Namun jika kita membuat commit baru, secara otomatis commit lama akan ditimpa oleh commit baru.
Posisi HEAD setelah reset mode soft
Kembali ke Awal
git reset --soft a8ea14d
Git Reset Mixed
a8ea14d (HEAD -> master) Menghapus file3.txt
171669f Melakukan Perubaha di file1.txt dan file2.txt
6ccf55a Melakukan Perubahan di file3.txt
270669f Menambah file3.txt
69d1679 Menambah file2.txt
6aec017 Menambah file1.txt
git reset --mixed 171669f
Kembali ke Awal
a8ea14d (HEAD -> master) Menghapus file3.txt
171669f Melakukan Perubaha di file1.txt dan file2.txt
6ccf55a Melakukan Perubahan di file3.txt
270669f Menambah file3.txt
69d1679 Menambah file2.txt
6aec017 Menambah file1.txt
git reset --mixed a8ea14d
Git Reset Hard
a8ea14d (HEAD -> master) Menghapus file3.txt
171669f Melakukan Perubaha di file1.txt dan file2.txt
6ccf55a Melakukan Perubahan di file3.txt
270669f Menambah file3.txt
69d1679 Menambah file2.txt
6aec017 Menambah file1.txt
git reset --hard 171669f