Belajar Git : Membatalkan Revisi Pada Git

Estimated: 6 min read
Belajar Git : Membatalkan Revisi Pada Git

Pada postingan sebelumnya kita sudah belajar bagaimana cara melihat perbandingan perbedaan revisi / commit yang telah kita lakukan di dalam repositori kita. Sekarang kita akan belajar bagaimana cara membatalkan revisi yang telah kita lakukan di dalam repositori.

Programmer atau siapapun itu sering melakukan kesalahan dalam pekerjaan yang dilakukannya, dan itu merupakan hal yang wajar. Masa lalu memang tidak bisa diulang haha...

Eitss... Tapi dengan git kita bisa mengulang masa lalu loh...

Yups, kita bisa mengulang kembali ke versi perubahan yang telah kita lakukan sesuai dengan keinginan kita. Terkadang ada kesalahan pada perubahan atau revisi yang kita lakukan dan kita ingin mengembalikannya seperti keadaan sebelum diubah. Maka git perlu memberi tahu git untuk mengembalikan seperti keadaan sebelumnya. Git sendiri menyediakan beberapa perintah untuk melakukan hal itu, antara lain : git checkout,git reset dan git revert. Yuk kita lihat cara penggunaannya...

1. Membatalkan Revisi Dengan Keadaan File Belum Staged

Jika revisi yang telah kita lakukan masih dalam keadaan belum staged ataupun committed maka kita bisa membatalkan perubahannya dengan perintah git checkout. Penggunaannya seperti berikut:

git checkout <nama file>

Pada artikel kali ini kita akan mencoba mengubah file index.php di dalam repositori yang sudah kita buat sebelumnya.

File index.php sebelum diubah:

echo "Sedang belajar git";
echo "Mengenal fungsi git diff";

File index.php setelah diubah:

echo "Sedang belajar git";
echo "Mengenal fungsi git diff";
echo "Belajar kembali ke masa lalu";

Kita coba jalankan perintah git diff index.php untuk melihat perbedaannya:

$ git diff
diff --git a/index.php b/index.php
index 66cb134..3702ac3 100644
--- a/index.php
+++ b/index.php
@@ -1,5 +1,5 @@
 <?php
  echo "Sedang belajar git";
- echo "Mengenal fungsi git diff";
+ echo "Mengenal fungsi git diff";
+ echo "Belajar kembali ke masa lalu";
 ?>

Dari hasil di atas terlihat perubahan yang telah kita lakukan pada file index.php. Kondisi dari file masih dalam keadaan belum staged dan committed. Kita bisa mengembalikan atau membatalkan perubahnnya dengan mengetikkan perintah:

git checkout index.php

Dengan perintah di atas maka perubahan yang baru saja kita lakukan dengan menambahkan baris echo "Belajar kembali ke masa lalu";akan dibatalkan dan baris tersebut akan dihapus dari file index.php, file index.php akan kembali seperti saat sebelum diubah.

Yuk kita cek status repositori kita setelah membatalkan perubahan dengan perintah:

git status

Maka tampilannya akan seperti di bawah, karena kita tidak melakukan perubahan apa apa.

$ git status
On branch master
nothing to commit, working tree clean

Eitss.. tapi hati-hati karena terkadang perintah ini akan menjadi senjata makan tuan karena akan menghapus perubahan yang baru saja dilakukan. Bila kita menjalankan perintah ini setelah melakukan banyak perubahan maka semua perubahan yang telah kita lakukan akan hilang dengan sia-sia.

2. Membatalkan Revisi Dengan Keadaan File Staged

Kondisi staged adalah kondisi file yang sudah dilakukan perubahan dan sudah di add dengan perintah git add namun belum dilakukan commit dengan perintah git commit. Pada kondisi ini kita dapat membatalkan perubahannya dengan perintah:

git reset <nama file>

Kita akan mencoba mengubah file index.php lagi setelah sebelumnya perubahannya kita batalkan dengan menambahkan baris yang sama seperti di atas.

echo "Sedang belajar git";
echo "Mengenal fungsi git diff";
echo "Belajar kembali ke masa lalu";

Setelah menambahkan baris di atas kemudian kita akan membuat status file index.php menjadi staged dengan perintah :

git add index.php

Setelah menjalankan perintah git add kita akan melihat status file index.php:

$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   index.php

Yupss.. Sekarang file index.php sudah berstatus staged, untuk membatalkan perubahan yang terjadi pada file index.php kita harus merubah status filenya dari staged menjadi modified terlebih dahulu dengan perintah:

git reset index.php

Kita cek lagi status filenya:

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   index.php

no changes added to commit (use "git add" and/or "git commit -a")

Kita sudah berhasil mengubah status file index.php dari staged menjadi modified, selanjutnya kita tinggal membatalkan perubahannya dengan perintah seperti sebelumnya yaitu:

git checkout index.php

Maka perubahannya akan dihapus atau dibatalkan dan isi dari file index.php akan kembali seperti sebelumnya.

3. Membatalkan Revisi Dengan Keadaan File Commited

Terkadang kita sudah menjalankan perintah git commit pada file projek kita, sehingga membuat status file tersebut menjadi commited.

Apakah masih bisa membatalkan perubahannya???

Tentu saja bisa...

Namun, untuk membatalkan perubahannya kita perlu mengetahui terlebih dahulu nomor commit yang nantinya perubahannya akan dikembalikan seperti pada nomor commit yang kita inginkan.

Mari kita ubah lagi file isi index.php seperti pada contoh sebelumnya. Kita lihat lagi hasil git diff nya menjadi seperti berikut:

$ git diff
diff --git a/index.php b/index.php
index 66cb134..fdff064 100644
--- a/index.php
+++ b/index.php
@@ -1,5 +1,5 @@
 <?php
  echo "Sedang belajar git";
- echo "Mengenal fungsi git diff";
+ echo "Mengenal fungsi git diff";
+ echo "Belajar kembali ke masa lalu";
 ?>

Selanjutnya kita akan membuat file index.php menjadi commited dengan perintah seperti dibawah:

git add index.php
git commit -m "belajar membatalkan perubahan pada git"

Setelah status file menjadi commited kita dapat melihat nomor commit nya dengan perintah git log:

$ git log
commit 6da9994ddb4c922b151c732da7b413f9ccfb86a6 (HEAD -> master)
Author: depotkode <seuramoid@gmail.com>
Date:   Wed Dec 15 10:14:11 2021 +0700

    belajar membatalkan perubahan pada git

commit a6403be16a7d20f0f339d672f45567f968825b8d
Author: depotkode <seuramoid@gmail.com>
Date:   Tue Feb 23 19:52:03 2021 +0700

    edit index.php

commit a5ed4897f2c434f85451ce6602dba8c92afae76b
Author: depotkode <seuramoid@gmail.com>
Date:   Mon Feb 22 17:26:48 2021 +0700

    git diff

commit 70cbe6b3844acdcfed538d044c35f147d5e97cd3
Author: depotkode <seuramoid@gmail.com>
Date:   Mon Feb 22 14:34:10 2021 +0700

    ubah index.php

commit 52978163d8f22e2c97a275ab23657100eb277165
Author: depotkode <seuramoid@gmail.com>
Date:   Fri Oct 23 06:03:01 2020 +0700

    Sedang belajar git

commit 6da9994ddb4c922b151c732da7b413f9ccfb86a6 merupakan commit yang baru saja kita lakukan setelah melakukan perubahan di atas. Dan kita akan membatalkan perubahannya atau mengembalikan kondisi file seperti pada commit sebelumnya yaitu commit a6403be16a7d20f0f339d672f45567f968825b8d.

Kita akan mengembalikan file index.php seperti pada commit sebelumnya dengan perintah:

git checkout a6403be16a7d20f0f339d672f45567f968825b8d index.php

Ketika menjalankan perintah di atas, kita sudah berhasil mengubah isi dari file index.php menjadi seperti sebelumnya. Namun ketika kita chek status filenya maka akan menjadi staged.

$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   index.php

Apabila kita ingin mengubahnya menjadi modified atau not staged maka kita dapat melakukannya seperti contoh sebelumnnya yaitu dengan:

git reset index.php

Setelah menjalankan perintah di atas maka kita telah berhasil mengembalikan isi file index.php menjadi seperti sebelumnya dan mengubah kondisi filenya menjadi modified.

Bagaimana jika kita memiliki banyak file yang ingin dikembalikan seperti pada commit sebelumnya???

Kita bisa melakukannya dengan perintah berikut:

git checkout <nomor commit>

Contohnya seperti dibawah ini.

git checkout a6403be16a7d20f0f339d672f45567f968825b8d

Perintah di atas akan mengembalikan semua file dengan nomor commit sekarang menjadi seperti nomor commit yang diinginkan. Namun hal ini hanya bersifat sementara atau temporer.

4. Kembali Ke Commit Sebelumnya Dengan Perintah HEAD

Jika kita ingin mengembalikan file seperti commit sebelumnya dengan jumlah tertentu maka kita dapat melakukannya dengan perintah HEAD.

Misalnya kita ingin mengembalikan file index.php menjadi seperti 4 commit sebelumnya, kita dapat melakukannya dengan perintah:

git checkout HEAD~4 index.php

HEAD~4 berarti 4 commit sebelumnya, jika kita ingin hanya dua commit saja berarti menggunakan HEAD~2.

Kesimpulan

Kita sudah belajar bagaimana cara untuk membatalkan perubahan yang telah kita lakukan pada git dan mengembalikan kondisinya seperti semula.

Selanjutnya kita akan belajar tentang perbedaan git checkout, git revert dan git checkout.

Semangat belajar...Sampai Jumpa 😄

Comments

Mohon sertakan informasi yang detail saat bertanya tentang eror, seperti: pesan error, log, dan screenshot.