Git

Git Cara Mengembalikan Komitmen Terakhir?

Git Cara Mengembalikan Komitmen Terakhir?
Git adalah alat berkesan yang memantau kod anda. Dan salah satu ciri hebat alat ini ialah anda dapat memeriksa sejarah anda dengan mudah dan kembali semula sekiranya anda telah melakukan kesalahan. Mari buat situasi di mana anda boleh mengembalikan komit terakhir dan melihat bagaimana perintah Git revert berfungsi.

Kami akan memulakan dengan menambahkan beberapa fail. Pada komit terakhir, kita akan menambah dan menghapus fail untuk mewujudkan keadaan yang tidak kemas. Kemudian kita akan kembali ke negeri sebelum kekacauan.

Anda boleh membuat folder yang dipanggil / test dan menjalankan perintah berikut untuk menginisialisasi Git dan membuat situasi yang dijelaskan di atas (Kami dengan sengaja melakukan komitmen terpisah untuk membuat sejarah):

$ git init
Repositori Git kosong yang dimulakan di / Users / zakh_eecs / _work / LearnGIT / git_revert / test /.git /
$ echo x> fail_1.txt
$ git tambah -A
$ git commit -m "Menambah fail_1.txt "
[master (root-komitmen) 08caf5d] Menambah fail_1.txt
1 fail diubah, 1 sisipan (+)
buat mod 100644 fail_1.txt
$ echo y> file_2.txt
$ git tambah -A
$ git commit -m "Menambah fail_2.txt "
[master ba18a2f] Menambah fail_2.txt
1 fail diubah, 1 sisipan (+)
buat mod 100644 file_2.txt
$ echo z> fail_3.txt
$ git tambah -A
$ git commit -m "Menambah fail_3.txt "
[master 97f09ad] Menambah fail_3.txt
1 fail diubah, 1 sisipan (+)
buat mod 100644 file_3.txt
$ echo u> file_4.txt
$ git tambah -A
$ git commit -m "Menambah fail_4.txt "
[master 9caf084] Menambah fail_4.txt
1 fail diubah, 1 sisipan (+)
buat mod 100644 file_4.txt
$ echo v> fail_5.txt
$ git tambah -A
$ git commit -m "Menambah fail_5.txt "
[master 3f228b2] Menambah fail_5.txt
1 fail diubah, 1 sisipan (+)
buat mod 100644 file_5.txt

Sekiranya kita memeriksa folder kita, kita akan melihat keadaan berikut:

$ ls -1
fail_1.txt
fail_2.txt
fail_3.txt
fail_4.txt
fail_5.txt

Sekiranya kita memeriksa sejarah, kita harus mempunyai fail berikut:

$ git log - talian
3f228b2 Menambah fail_5.txt
9caf084 Menambah fail_4.txt
97f09ad Menambah fail_3.txt
ba18a2f Menambah fail_2.txt
08caf5d Menambah fail_1.txt

Sekarang mari buat kekacauan, kita akan memadam beberapa fail dan menambah fail yang tidak baik.

$ rm fail_2.txt
$ rm fail_4.txt
$ echo w> my_bad_file.txt
$ git tambah -A
$ git commit-m "Menambah dan memadam fail tanpa memikirkan akibatnya"
[master 879fbf8] Menambah dan memadam fail tanpa memikirkan akibatnya
3 fail diubah, 1 sisipan (+), 2 penghapusan (-)
hapus mod 100644 fail_2.txt
hapus mod 100644 file_4.txt
buat mod 100644 my_bad_file.txt

Sekarang, ini adalah keadaan folder kami:

$ ls -1
fail_1.txt
fail_3.txt
fail_5.txt
my_bad_file.txt

Dan inilah keadaan sejarah kita:

$ git log - talian
879fbf8 Menambah dan memadam fail tanpa memikirkan akibatnya
3f228b2 Menambah fail_5.txt
9caf084 Menambah fail_4.txt
97f09ad Menambah fail_3.txt
ba18a2f Menambah fail_2.txt
08caf5d Menambah fail_1.txt

Kami sedar bahawa kami tidak mahu komitmen terakhir 879fbf8. Oleh itu, kami menggunakan arahan balik seperti berikut:

$ git mengembalikan 879fbf8

Ini akan membuka tetingkap teks untuk mengedit komen automatik:

Kembalikan "Fail yang ditambahkan dan dihapus tanpa memikirkan akibatnya"
 
Ini membalikkan komitmen 879fbf849c4bd6fb9a377604d6355c76b92a832c.
 
# Sila masukkan mesej komit untuk perubahan anda. Garisan bermula
# dengan '#' akan diabaikan, dan mesej kosong membatalkan komit.
# Pada ketua cawangan
# Perubahan yang akan dilakukan:
# Fail baru: file_2.txt
# Fail baru: file_4.txt
# Dipadam: my_bad_file.txt
#

Anda boleh mengubah komen. Kami akan menyimpannya sebagaimana adanya. Sebaik sahaja anda menyimpan tetingkap komen, tugas mengembalikan akan dilakukan:

$ git mengembalikan 879fbf8
[master 6e80f0e] Kembalikan "Fail yang ditambahkan dan dihapus tanpa memikirkan akibatnya"
3 fail diubah, 2 sisipan (+), 1 penghapusan (-)
buat mod 100644 file_2.txt
buat mod 100644 file_4.txt
hapus mod 100644 my_bad_file.txt

Mari lihat folder kami sekarang:

$ ls -1
fail_1.txt
fail_2.txt
fail_3.txt
fail_4.txt
fail_5.txt

Fail kami kembali mengikut urutan seperti sebelumnya. Semua penambahan dan penghapusan telah dikembalikan. Mari periksa log:

$ git log - talian
 
6e80f0e Kembalikan "Fail yang ditambahkan dan dihapus tanpa memikirkan akibatnya"
879fbf8 Menambah dan memadam fail tanpa memikirkan akibatnya
3f228b2 Menambah fail_5.txt
9caf084 Menambah fail_4.txt
97f09ad Menambah fail_3.txt
ba18a2f Menambah fail_2.txt
08caf5d Menambah fail_1.txt

Terdapat komitmen baru 6e80f0e. Sebarang perubahan yang merupakan sebahagian daripada 879fbf8 dibatalkan dan kemudian dilakukan di 6e80f0e.

Amaran: Perintah tetapan semula Git membolehkan anda membuat pembatalan juga. Tetapi dalam kes reset (terutamanya hard reset), ia akan menghapus 879fbf8 melakukan seperti tidak pernah berlaku dan tidak akan ada 6e80f0e komited. Dengan arahan balik, semua orang dapat melihat perubahan yang telah berlaku. Dalam kes tetapan semula, tidak ada jejak yang tersisa. Oleh itu, adalah idea yang buruk untuk menggunakan perintah reset di repositori awam kerana ia boleh menyebabkan kekeliruan besar-besaran. Peraturan emas adalah - jangan gunakan reset di repositori awam, gunakan revert yang lebih selamat.

Kesimpulannya:

Perintah Git revert adalah cara cepat dan mudah untuk memperbaiki kesilapan anda. Ini adalah arahan yang harus anda ingat jika anda kerap bekerja dengan Git.

Sambung belajar:

Cara Menggunakan Mesin Cheat GameConqueror di Linux
Artikel ini merangkumi panduan mengenai penggunaan mesin cheat GameConqueror di Linux. Ramai pengguna yang bermain permainan di Windows sering menggun...
Emulator Konsol Permainan Terbaik untuk Linux
Artikel ini akan menyenaraikan perisian emulasi konsol permainan popular yang tersedia untuk Linux. Emulation adalah lapisan keserasian perisian yang ...
Distro Linux Terbaik untuk Permainan pada tahun 2021
Sistem operasi Linux telah jauh dari tampilan asal, ringkas dan berasaskan pelayan. OS ini telah berkembang pesat dalam beberapa tahun kebelakangan in...