Git Reflog - Cara memulihkan cawangan yang dipadam yang tidak digabungkan



Artikel mengenai Git Reflog ini adalah panduan komprehensif bagaimana memulihkan cawangan yang dihapus di Git dengan bantuan Git Reflog.

“Adakah anda pernah kehilangan cawangan, yang kod sumbernya belum digabungkan di cawangan‘ pelepasan ’atau cawangan‘ utama ’? Bagaimana jika anda ingin menjana semula cawangan yang dihapus walaupun kerjanya sudah digabungkan menjadi cabang utama? ' . Nah, satu-satunya penyelesaian untuk senario tersebut adalah Pergi Reflog .

Melalui artikel ini mengenai Git Reflog, saya akan membantu andafahami senario di mana kerja anda di cawangan boleh hilang dan bagaimana memulihkan cawangan.Juga, artikel ini akan menyoroti pendekatan yang boleh anda ambil untuk mencegah kehilangan cawangan yang tidak disengajakan semasa bekerja dalam projek besar.





    1. Apa itu Git Reflog?
    2. Bagaimana dan bila cawangan dihapuskan?
    3. Pulihkan cawangan yang dipadamkan
    4. Kerja apa yang dipulihkan apabila cawangan yang dipadam dipulihkan?
    5. Sub-perintah Git Reflog

Oleh itu, mari kita mulakan artikel ini.



Pertimbangkan senario, maintainer harus menggabungkan banyak cabang ciri dari kolaborator yang berlainan dan kemudian menghapusnya akhirnya tetapi cawangan tersebut dipadam secara tidak sengaja sebelum karya dapat digabungkan?

Baiklah, sebelum saya meneruskan artikel ini, izinkan saya memberitahu anda bahawa perkara itu tidak mungkin berlaku di Git. selamat dan bertindak sebagai pos pemeriksaan tidak akan membenarkan anda melakukannya. Jadi, di sinilah Git Reflog masuk ke dalam gambar.

Apa itu Git Reflog?

ThePerintah ‘reflog’ menyimpan a trek dari setiap perubahan yang dibuat dalam rujukan (cawangan atau tag) dari repositori dan menyimpan sejarah log cawangan dan tag yang dibuat sama ada secara tempatan atau diperiksa. Log rujukan seperti snapshot komit ketika cabang dibuat atau diklon, check-out, dinamakan semula, atau setiap komit yang dibuat di cawangan dikendalikan oleh dan disenaraikan oleh arahan ‘reflog’.



Catatan: Cabang akan dapat dipulihkan dari direktori kerja anda hanya jika cawangan itu pernah ada di repositori tempatan anda, iaitu. cawangan itu dibuat secara tempatan atau daftar keluar dari repositori jauh di repositori tempatan anda untuk Git menyimpan log sejarah rujukannya.

Perintah ini harus dilaksanakan di repositori yang mempunyai cabang yang hilang. Sekiranya anda menganggapsituasi repositori jauh, maka anda harus melaksanakan perintah reflog pada mesin pemaju yang mempunyai cawangan.

arahan: pergi reflog

Sekarang anda tahu, apa itu Git Reflog, biarkan kamicuba hapuskan cawangan yang digabungkan dan yang tidak digabungkan dan lihat bagaimana Git mengatasinya?

Langkah 1: Senaraikan cawangan yang digabungkan menjadi induk

Pertama, periksa ke dalam ‘ tuan Jika anda berada di cawangan lain menggunakan arahan:

$ git master checkout

Pengeluaran

Git Checkout Master - Git Reflog - Edureka

Sekarang, untuk mendapatkan senarai cawangan gabungan, sebutkan arahan berikut:

cawangan $ git - digabungkan

Pengeluaran:

Langkah 1.1: Kemudian, padamkan cawangan yang digabungkan:

$ git cawangan -d terbitan # 902

Pengeluaran:

cara membuat rentetan rawak dalam java

Cabang ‘issue # 902’ berjaya dihapuskan kerana sudah digabungkan ke cawangan ‘master’.

Langkah 2: Sekarang, mari kita senaraikan cawangan yang tidak digabungkan menjadi induk.

cawangan $ git --tidak digabungkan

Pengeluaran

Langkah 2.2: Akhirnya, mari kita hapus cawangan yang tidak digabungkan dengan arahan berikut:

$ git cawangan -d prepod

Sekiranya anda cuba memadam salah satu cabang dengan kerja yang belum selesai, katakan cabang 'preprod', git akan memaparkan mesej amaran.

Pengeluaran

Sekarang, sebelum saya memberitahu anda bagaimana anda dapat memulihkan data artikel ini di Git Reflog, izinkan saya memberitahu anda apa sebenarnya yang berlaku apabila cawangan dihapus dan dalam keadaan apa cawangan itu dapat dipulihkan.

Bagaimana dan bila cawangan dihapuskan?

Seperti yang kita ketahui bahawa Git adalah Sistem Kawalan Versi Teragih (DVCS), setiap mesin dengan klon atau salinan repositori bertindak sebagai kedua-duanya simpul dan a hub . Inimenunjukkan bahawa setiap mesin akan mempunyai salinan kod dan sejarah repositori sendiri.Tidak perlu dikatakan anda akan menjadi berkongsi kerja anda dengan orang lain dan penerbitan sama.

Oleh itu, dalam senario seperti itu, mungkin ada 3 kes apabila cawangan dihapuskan dalam senario dunia nyata dengan banyak penyumbang mengerjakan projek besar. Perkara berikut boleh berlaku:

Kes 1 - Pembangun boleh menggabungkan atau menghapus cawangan

Pertimbangkan senario di mana pembangun menggabungkan cabang ciri ke cabang utama secara tempatan dan kemudian memadam cabang ciri menggunakan ‘ cawangan git Perintah dengan '- d 'Bendera seperti yang dilihat pada tangkapan layar sebelumnya.

Perintah: ‘Git branch -d branch_name’

Mungkin juga berlaku bahawa pembangun memutuskan untuk membuang perubahan pada cabang dan memutuskan untuk menghapus cabang tanpa menggabungkannya dengan cabang lain menggunakan perintah berikut:

Perintah: ‘Git branch -D branch_name’

Dengan arahan di atas, pembangunnya adalahpaksa cabang mengatasi amaran git secara paksa

cawangan $ git -D preprod

Pengeluaran

Catatan : Cabang ‘preprod’ tidak akan disenaraikan lagi semasa anda menjalankan perintah ‘git branch’. Jadi, ykerja kita yang disimpan di cawangan ini akan hilang.

Kes 2 - Pembangun menghapus cawangan di repositori bersama

Pertimbangkan senario, di mana pembangun dengan akses membaca / menulis cuba menghapus cawangan jauh dengan kuat olehmenggunakan arahan ‘git push’ dengan bendera ‘–hapus’.

$ git push origin --hapus perbaikan cepat

Pengeluaran

Terlepas dari ini, mungkin juga ada kes di mana pengguna yang tidak berwenang atau berniat jahat memaksa untuk menghapus cawangan terpencil.Dalam kes sedemikian, penyelenggara akan dapat memulihkan cawangan ‘quickfix’ yang dihapuskan hanya jika pemajusebelum ini telah memeriksa cawangan ini. Dalam senario ini, repositori tempatannya masih mempunyai log rujukannya.

Sekiranya penyelenggara tidak dapat memulihkan cawangan, maka pemilik cawangan yang menghapusnya mesti memulihkan dari reflog tempatannya.

Kes 3 - Skrip cangkuk dengan hak istimewa menghapus cabang

Ini mungkin merupakan senario yang jarang berlaku, tetapi kemungkinan skrip kait dipicu pada peristiwa operasi git tertentu dan paksa menghapus cabang yang belum digabungkan. Awak bolehpertimbangkan salah satu perintah yang disebutkan di atas ditulis dalam skrip cangkuk dengan hak istimewa sudo.

Sekarang, setelah anda mengetahui apa yang berlaku, apabila anda menghapus cawangan, mari teruskan artikel ini di Git Reflog dan lihat bagaimana memulihkan cawangan yang hilang.

Pulihkan cawangan yang dipadamkan menggunakan Git Reflog

Langkah 1 : Log sejarah semua rujukan

Dapatkan senarai semua log sejarah yang direkodkan tempatan untuk semua rujukan (‘master’, ‘uat’ dan ‘prepod’) di repositori ini.

pergi reflog

Langkah 2 : Kenal pasti cap sejarah

Seperti yang anda dapat lihat dari gambar di atas, Id komitmen yang diserlahkan: e2225bb bersama dengan indeks penunjuk HEAD: 4 adalah ketika ' menjual semula Cawangan telah dibuat dari penunjuk HEAD semasa yang menunjukkan karya terbaru anda.

Langkah 3 : Pulihkan

Untuk memulihkan kembali 'Jual semula Cawangan menggunakan arahan‘Git checkout’ melewati rujukan penunjuk HEAD dengan indeks id - 4.Ini adalah rujukan penunjuk ketika cabang ‘preprod’ dibuat id komit panjang yang diserlahkan dalam tangkapan skrin output.

git checkout -b preprod HEAD @ {4}

Pengeluaran

Dan voila! ' menjual semula Cawangan dipulihkan kembali dengan semua kod sumber anda.

CATATAN : Biar saya bsertakan semula arahan ‘git checkout’ yang digunakan di atas dan bantu anda memahami dengan lebih baik:

Perintah ‘git checkout’ adalah perintah yang terlalu dimuat (Sama seperti fungsi Java yang terlalu banyak). Ini adalah bahagian di mana cawangan sebenar dipulihkan.

Perintah tunggal ini pertama kali memeriksa cap waktu sejarah sebelumnya yang ditunjukkan oleh KEPALA @ {4} penunjuk dan kemudian membuat cabang dengan nama 'preprod' menggunakan pilihan '-b' serta menukar direktori kerja anda ke cabang yang baru dibuat.

Ini menunjukkan bahawa cabang yang diubah akan dari 'master' ke 'preprod' seperti yang ditunjukkan pada layar output.Anda kini boleh menggabungkannya dengan cabang ‘master’ atau ‘release’ mengikut model percabangan anda.

Sekarang, bahawa anda tahu bagaimana memulihkan cawangan, izinkan saya memberitahu anda apa kerja yang dipulihkan apabila cawangan yang dipadam dipulihkan.

Kerja apa yang dipulihkan apabila cawangan yang dipadam dipulihkan?

Fail yang disimpan dan disimpan dalam senarai indeks simpanan akan dipulihkan semula. Sebarang fail yang tidak dilacak akan hilang. Juga, it adalah idea yang baik untuk selalu membuat pentas dan melakukan kerja anda atau menyimpannya.

Untuk mengambil rujukan log dari cabang atau tag tertentu jalankan perintah - 'git reflog'.

Contoh: Untuk memeriksa rujukan log cabang ‘uat’ sahaja gunakan perintah - “git reflog uat”.

Sub-perintah Git Reflog

pergi reflog

Perintah untuk membuka halaman manual

$ git reflog --membantu

Pengeluaran

pergi reflog tunjuk

Menunjukkan log rujukan yang disediakan di baris arahan.

git reflog show master @ {0}

pergi reflog tamat

Perintah ini digunakan untuk memangkas entri reflog lama.

git reflog tamat

pergi reflog padam

Perintah ini menghapus satu entri dari sejarah reflog.

git reflog hapus

pergi reflog ada

apakah perbezaan antara kelas abstrak dan antara muka?

Perintah ini memeriksa sama ada ref (cabang atau tag) mempunyai entri sejarah log - log masuk.

git reflog ada

Selain dari perintah yang disebutkan di atas, perintah 'Git Reflog' mengambil pelbagai subkomando, dan pilihan yang berbeza bergantung pada subkomando yang disebutkan di atas. Untuk bacaan selanjutnya, jalankan “ git reflog –membantu ”Dari tingkap terminal.

Dengan ini, kami mengakhiri artikel ini mengenai Git Reflog.Tujuan DevOps adalah untuk mencipta perisian berkualiti lebih cepat dan lebih dipercayai dengan mengundang komunikasi dan kerjasama yang lebih baik antara pasukan. Sekiranya anda tertarik dengan artikel ini, c lihatlah oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus Latihan Persijilan Edureka DevOps membantu pelajar memahami apa itu DevOps dan memperoleh kepakaran dalam pelbagai proses dan alat DevOps seperti Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack dan GIT untuk mengautomasikan beberapa langkah dalam SDLC.

Ada soalan untuk kami? Sila sebutkan di bahagian komen artikel 'Git Reflog' dan kami akan menghubungi anda secepat mungkin.