Git

Git Cara Mengembalikan Komit Terakhir?

Git Cara Mengembalikan Komit Terakhir?
Git adalah alat efektif yang melacak kode Anda. Dan salah satu fitur hebat dari alat ini adalah Anda dapat dengan mudah memeriksa riwayat Anda dan mengembalikannya jika Anda melakukan kesalahan. Mari kita buat situasi di mana Anda dapat mengembalikan komit terakhir dan melihat bagaimana perintah Git revert bekerja.

Kita akan mulai dengan menambahkan beberapa file. Pada komit terakhir, kita akan menambah dan menghapus file untuk menciptakan situasi yang berantakan. Kemudian kita akan kembali ke keadaan sebelum kekacauan.

Anda dapat membuat folder bernama /test dan menjalankan perintah berikut untuk menginisialisasi Git dan membuat situasi yang dijelaskan di atas (Kami sengaja melakukan komit terpisah untuk membuat riwayat):

$ git init
Repositori Git kosong yang diinisialisasi di /Users/zakh_eecs/_work/LearnGIT/git_revert/test/.git/
$ echo x > file_1.txt
$ git tambahkan -A
$ git commit -m "Menambahkan file_1.txt"
[master (root-commit) 08caf5d] Menambahkan file_1.txt
1 file diubah, 1 penyisipan (+)
buat mode 100644 file_1.txt
$ echo y > file_2.txt
$ git tambahkan -A
$ git commit -m "Menambahkan file_2.txt"
[master ba18a2f] Menambahkan file_2.txt
1 file diubah, 1 penyisipan (+)
buat mode 100644 file_2.txt
$ echo z > file_3.txt
$ git tambahkan -A
$ git commit -m "Menambahkan file_3.txt"
[master 97f09ad] Menambahkan file_3.txt
1 file diubah, 1 penyisipan (+)
buat mode 100644 file_3.txt
$ echo u > file_4.txt
$ git tambahkan -A
$ git commit -m "Menambahkan file_4.txt"
[master 9caf084] Menambahkan file_4.txt
1 file diubah, 1 penyisipan (+)
buat mode 100644 file_4.txt
$ echo v > file_5.txt
$ git tambahkan -A
$ git commit -m "Menambahkan file_5.txt"
[master 3f228b2] Menambahkan file_5.txt
1 file diubah, 1 penyisipan (+)
buat mode 100644 file_5.txt

Jika kita memeriksa folder kita, kita akan melihat situasi berikut:

$ ls -1
file_1.txt
file_2.txt
file_3.txt
file_4.txt
file_5.txt

Jika kita memeriksa sejarah, kita harus memiliki file-file berikut:

$ git log --oneline
3f228b2 Menambahkan file_5.txt
9caf084 Menambahkan file_4.txt
97f09ad Menambahkan file_3.txt
ba18a2f Menambahkan file_2.txt
08caf5d Menambahkan file_1.txt

Sekarang mari kita membuat beberapa kekacauan, kita akan menghapus beberapa file dan menambahkan file yang buruk.

$rm file_2.txt
$rm file_4.txt
$ echo w > my_bad_file.txt
$ git tambahkan -A
$ git commit -m "Menambahkan dan menghapus file tanpa memikirkan konsekuensinya"
[master 879fbf8] Menambahkan dan menghapus file tanpa memikirkan konsekuensinya
3 file diubah, 1 penyisipan (+), 2 penghapusan (-)
hapus mode 100644 file_2.txt
hapus mode 100644 file_4.txt
buat mode 100644 my_bad_file.txt

Sekarang, ini adalah kondisi folder kami:

$ ls -1
file_1.txt
file_3.txt
file_5.txt
file_bad_saya.txt

Dan inilah kondisi sejarah kita:

$ git log --oneline
879fbf8 Menambahkan dan menghapus file tanpa memikirkan konsekuensinya
3f228b2 Menambahkan file_5.txt
9caf084 Menambahkan file_4.txt
97f09ad Menambahkan file_3.txt
ba18a2f Menambahkan file_2.txt
08caf5d Menambahkan file_1.txt

Kami menyadari bahwa kami tidak ingin komit terakhir 879fbf8. Jadi kami menggunakan perintah revert berikut:

$ git kembalikan 879fbf8

Ini akan membuka jendela teks untuk mengedit komentar otomatis:

Kembalikan "File yang ditambahkan dan dihapus tanpa memikirkan konsekuensinya"
 
Ini mengembalikan komit 879fbf849c4bd6fb9a377604d6355c76b92a832c.
 
# Silakan masukkan pesan komit untuk perubahan Anda. Garis mulai
# dengan '#' akan diabaikan, dan pesan kosong membatalkan komit.
# Pada master cabang
# Perubahan yang harus dilakukan:
#       file baru:   file_2.txt
#       file baru:   file_4.txt
#       dihapus:    my_bad_file.txt
#

Anda dapat mengubah komentar. Kami akan tetap seperti itu. Segera setelah Anda menyimpan jendela komentar, tugas pengembalian akan dilakukan:

$ git kembalikan 879fbf8
[master 6e80f0e] Kembalikan "File yang ditambahkan dan dihapus tanpa memikirkan konsekuensinya"
3 file diubah, 2 penyisipan (+), 1 penghapusan (-)
buat mode 100644 file_2.txt
buat mode 100644 file_4.txt
hapus mode 100644 my_bad_file.txt

Mari kita lihat folder kita sekarang:

$ ls -1
file_1.txt
file_2.txt
file_3.txt
file_4.txt
file_5.txt

File kami kembali berurutan seperti sebelumnya. Semua penambahan dan penghapusan telah dikembalikan. Mari kita periksa lognya:

$ git log --oneline
 
6e80f0e Kembalikan "File yang ditambahkan dan dihapus tanpa memikirkan konsekuensinya"
879fbf8 Menambahkan dan menghapus file tanpa memikirkan konsekuensinya
3f228b2 Menambahkan file_5.txt
9caf084 Menambahkan file_4.txt
97f09ad Menambahkan file_3.txt
ba18a2f Menambahkan file_2.txt
08caf5d Menambahkan file_1.txt

Ada komitmen baru 6e80f0e. Setiap perubahan yang menjadi bagian dari 879fbf8 dibatalkan dan kemudian dilakukan di 6e80f0e.

Peringatan: Perintah reset Git memungkinkan Anda untuk membatalkan komit juga. Tetapi dalam kasus reset (terutama hard reset), itu akan menghapus 879fbf8 komit seperti itu tidak pernah terjadi dan tidak akan ada 6e80f0e melakukan. Dengan perintah revert, semua orang dapat melihat perubahan yang telah terjadi. Dalam kasus reset, tidak ada jejak yang tersisa. Jadi itu ide yang buruk untuk menggunakan perintah reset di repositori publik karena dapat menyebabkan kebingungan massal. Aturan emasnya adalah - jangan gunakan reset di repositori publik, gunakan revert yang lebih aman.

Kesimpulannya:

Perintah revert Git adalah cara cepat dan nyaman untuk memperbaiki kesalahan Anda. Ini adalah perintah yang harus Anda ingat jika Anda bekerja secara teratur dengan Git.

Pelajaran lanjutan:

Cara Mengubah Pengaturan Mouse dan Touchpad Menggunakan Xinput di Linux
Sebagian besar distribusi Linux dikirimkan dengan pustaka "libinput" secara default untuk menangani kejadian input pada sistem. Ini dapat memproses ke...
Petakan ulang tombol mouse Anda secara berbeda untuk perangkat lunak yang berbeda dengan Kontrol Tombol X-Mouse
Mungkin Anda membutuhkan alat yang dapat membuat kontrol mouse Anda berubah dengan setiap aplikasi yang Anda gunakan. Jika demikian, Anda dapat mencob...
Ulasan Mouse Nirkabel Microsoft Sculpt Touch
Saya baru-baru ini membaca tentang Microsoft Sculpt Touch mouse nirkabel dan memutuskan untuk membelinya. Setelah menggunakannya untuk sementara waktu...