Git Reflog - Bagaimana memulihkan cabang terhapus yang tidak digabungkan



Artikel tentang Git Reflog ini adalah panduan komprehensif tentang cara memulihkan cabang yang terhapus di Git dengan bantuan Git Reflog.

“Apakah Anda pernah kehilangan cabang, yang kode sumbernya belum digabungkan di cabang 'rilis' atau cabang 'utama'? Bagaimana jika Anda ingin membuat ulang cabang yang dihapus meskipun pekerjaannya telah digabungkan ke dalam cabang utama? ” . Nah, satu-satunya solusi untuk skenario seperti itu adalah Pergi Reflog .

Melalui artikel di Git Reflog ini, saya akan membantu Andamemahami skenario di mana pekerjaan Anda di cabang bisa hilang dan bagaimana memulihkan cabang.Selain itu, artikel ini akan menyoroti pendekatan yang dapat Anda lakukan untuk mencegah hilangnya cabang yang tidak disengaja saat bekerja dalam proyek besar.





    1. Apa itu Git Reflog?
    2. Bagaimana dan kapan cabang dihapus?
    3. Pulihkan cabang yang dihapus
    4. Pekerjaan apa yang dipulihkan ketika cabang yang dihapus dipulihkan?
    5. Git Reflog Sub-perintah

Jadi, mari kita mulai dengan artikel ini.



Pertimbangkan skenario, a maintainer harus menggabungkan banyak cabang fitur dari kolaborator yang berbeda dan kemudian menghapusnya pada akhirnya tetapi cabang tersebut terhapus secara tidak sengaja sebelum pekerjaan dapat digabungkan?

Nah, sebelum saya melanjutkan artikel ini, izinkan saya memberi tahu Anda bahwa hal itu tidak mungkin dilakukan di Git. aman dan bertindak karena pos pemeriksaan tidak mengizinkan Anda melakukannya. Jadi, di sinilah Git Reflog hadir.

Apa itu Git Reflog?

ItuPerintah 'reflog' menyimpan file melacak setiap perubahan yang dibuat dalam referensi (cabang atau tag) dari repositori dan menyimpan riwayat log dari cabang dan tag yang dibuat secara lokal atau diperiksa. Log referensi seperti snapshot komit saat cabang dibuat atau dikloning, di-check-out, diganti namanya, atau komit apa pun yang dibuat pada cabang dipertahankan oleh dan dicantumkan dengan perintah 'reflog'.



catatan: Cabang akan dapat dipulihkan dari direktori kerja Anda hanya jika cabang tersebut pernah ada di repositori lokal Anda, mis. cabang itu dibuat secara lokal atau di-check-out dari repositori jarak jauh di repositori lokal Anda agar Git menyimpan log histori referensinya.

Perintah ini harus dijalankan di repositori yang cabangnya hilang. Jika Anda mempertimbangkansituasi repositori jarak jauh, maka Anda harus menjalankan perintah reflog di komputer pengembang yang memiliki cabang.

perintah: pergi reflog

Sekarang setelah Anda tahu, apa itu Git Reflog, beri tahu kamicoba hapus cabang yang sudah digabung dan yang belum digabungkan dan lihat bagaimana Git menanganinya?

Langkah 1: Buat daftar cabang yang digabungkan menjadi master

Pertama, lihat ke ' menguasai 'Cabang jika Anda berada di beberapa cabang lain menggunakan perintah:

Master checkout $ git

Keluaran

Git Checkout Master - Git Reflog - Edureka

Sekarang, untuk mendapatkan daftar cabang yang digabungkan, sebutkan perintah berikut:

membaca dan menulis file excel di java
$ git branch --merged

Keluaran:

Langkah 1.1: Kemudian, hapus cabang yang digabungkan:

$ git branch -d masalah # 902

Keluaran:

Cabang 'Masalah # 902' berhasil dihapus karena sudah digabungkan ke dalam cabang 'master'.

Langkah 2: Sekarang, mari kita daftarkan cabang yang tidak digabung menjadi master.

$ git branch --tidak digabungkan

Keluaran

Langkah 2.2: Terakhir, mari kita hapus cabang yang tidak digabungkan dengan perintah berikut:

$ git branch -d prepod

Jika Anda mencoba untuk menghapus salah satu cabang dengan pekerjaan yang belum selesai, katakan cabang 'preprod', git menampilkan pesan peringatan.

Keluaran

Sekarang, sebelum saya memberi tahu Anda bagaimana Anda dapat memulihkan data artikel ini di Git Reflog, izinkan saya memberi tahu Anda apa yang sebenarnya terjadi ketika sebuah cabang dihapus dan dalam keadaan apa cabang tersebut dapat dipulihkan.

Bagaimana dan kapan cabang dihapus?

Seperti yang kita ketahui bahwa Git adalah a Sistem Kontrol Versi Terdistribusi (DVCS), setiap mesin dengan klon atau salinan repositori bertindak sebagai keduanya simpul dan a pusat . Inimenyiratkan bahwa setiap mesin akan memiliki salinannya sendiri dari seluruh kode repositori dan riwayat.Tak perlu dikatakan Anda akan menjadi berbagi pekerjaan Anda dengan orang lain dan penerbitan sama.

Karenanya, dalam skenario seperti itu, mungkin ada 3 kasus ketika cabang dihapus dalam skenario dunia nyata dengan banyak kontributor yang mengerjakan proyek besar. Berikut ini mungkin kasusnya:

Kasus 1 - Pengembang dapat menggabungkan atau menghapus cabang

Pertimbangkan skenario di mana pengembang menggabungkan cabang fitur ke dalam cabang utama secara lokal dan kemudian menghapus cabang fitur menggunakan ' git branch 'Perintah dengan '- d 'Seperti yang terlihat di tangkapan layar sebelumnya.

Perintah: ‘Git branch -d branch_name’

Bisa juga terjadi bahwa pengembang 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 perintah di atas, pengembang adalahhapus paksa cabang yang menimpa peringatan git

$ git branch -D preprod

Keluaran

Catatan : Cabang ‘preprod’ tidak akan lagi dicantumkan saat Anda menjalankan perintah ‘git branch’. Jadi, ypekerjaan kita yang disimpan di cabang ini akan hilang.

Kasus 2 - Pengembang menghapus cabang di repositori bersama

Pertimbangkan skenario, di mana pengembang dengan akses baca / tulis mencoba menghapus cabang jarak jauh secara paksa olehmenggunakan perintah 'git push' dengan tanda '–delete'.

$ git push origin - hapus quickfix

Keluaran

Selain itu, mungkin juga ada kasus di mana pengguna yang tidak berwenang atau jahat memaksa dorongan untuk menghapus cabang jarak jauh.Dalam kasus seperti itu, pengelola akan dapat memulihkan cabang 'perbaikan cepat' yang dihapus hanya jika pengembangsebelumnya telah memeriksa cabang ini. Dalam skenario ini, repositori lokalnya masih akan memiliki log referensi.

Jika pengelola tidak dapat memulihkan cabang, maka pemilik cabang yang menghapusnya harus memulihkan dari reflog lokalnya.

Kasus 3 - Skrip hook dengan hak super menghapus cabang

Ini mungkin jarang terjadi, tetapi skenario yang memungkinkan bahwa skrip hook dipicu pada peristiwa operasi git tertentu dan memaksa menghapus cabang yang belum digabungkan. Kamu bisapertimbangkan salah satu dari perintah yang disebutkan di atas ditulis dalam skrip hook dengan hak istimewa sudo.

Sekarang, setelah Anda tahu apa yang terjadi, ketika Anda menghapus cabang, mari kita lanjutkan dengan artikel ini di Git Reflog dan lihat bagaimana memulihkan cabang yang hilang.

apa kerangka pegas

Pulihkan cabang yang dihapus menggunakan Git Reflog

Langkah 1 : Log sejarah dari semua referensi

Dapatkan daftar semua log riwayat lokal yang direkam untuk semua referensi ('master', 'uat' dan 'prepod') di repositori ini.

pergi reflog

Langkah 2 : Identifikasi cap sejarah

Seperti yang Anda lihat dari snapshot di atas, file ID komit yang disorot: e2225bb bersama dengan indeks penunjuk HEAD: 4 adalah saat ' penjualan lagi 'Cabang dibuat dari penunjuk HEAD saat ini yang mengarah ke pekerjaan terbaru Anda.

LANGKAH 3 : Memulihkan

Untuk memulihkan kembali 'Penjualan lagi 'Cabang gunakan perintah'Git checkout' meneruskan referensi penunjuk HEAD dengan id indeks - 4.Ini adalah referensi penunjuk ketika cabang 'preprod' dibuat dengan id komit panjang yang disorot di tangkapan layar keluaran.

git checkout -b preprod HEAD @ {4}

Keluaran

Dan voila! ' penjualan lagi 'Cabang dipulihkan kembali dengan semua kode sumber Anda.

CATATAN : Biarkan saya bmeninjau kembali perintah 'git checkout' yang digunakan di atas dan membantu Anda memahami dengan lebih baik:

Perintah 'git checkout' adalah perintah yang di-overload (Sama seperti fungsi Java yang di-overload). Ini adalah bagian di mana cabang yang sebenarnya dipulihkan.

Perintah tunggal ini pertama kali memeriksa stempel waktu riwayat sebelumnya yang ditunjukkan oleh HEAD @ {4} petunjuk arah dan kemudian membuat cabang dengan nama 'preprod' menggunakan opsi “-b” serta mengalihkan direktori kerja Anda ke cabang yang baru dibuat.

Ini menyiratkan bahwa cabang yang dialihkan akan dari 'master' ke 'preprod' seperti yang ditunjukkan di layar keluaran.Anda sekarang dapat menggabungkannya dengan 'master' atau cabang 'rilis' sesuai model percabangan Anda.

Sekarang, setelah Anda mengetahui cara memulihkan cabang, izinkan saya memberi tahu Anda pekerjaan apa yang dipulihkan ketika cabang yang dihapus dipulihkan.

Pekerjaan apa yang dipulihkan ketika cabang yang dihapus dipulihkan?

File-file yang disimpan dalam daftar indeks simpanan akan dipulihkan kembali. Semua file yang tidak terlacak akan hilang. Juga, sayaAda baiknya untuk selalu mementaskan dan melakukan pekerjaan Anda atau menyimpannya.

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

Contoh: Untuk memeriksa referensi log dari cabang 'uat' saja, gunakan perintah - 'git reflog uat'.

Git Reflog Sub-perintah

pergi reflog

Perintah untuk membuka halaman manual

$ git reflog --help

Keluaran

pergi reflog menunjukkan

Menampilkan log dari referensi yang disediakan di baris perintah.

master acara git reflog @ {0}

pergi reflog berakhir

Perintah ini digunakan untuk memangkas entri reflog yang lebih lama.

git reflog kedaluwarsa

pergi reflog menghapus

Perintah ini menghapus satu entri dari riwayat reflog.

git reflog delete

pergi reflog ada

Perintah ini memeriksa apakah ref (cabang atau tag) memiliki entri riwayat log reflog.

git reflog ada

Terlepas dari perintah yang disebutkan di atas, Perintah 'Git Reflog' mengambil berbagai subperintah, dan opsi berbeda tergantung pada subperintah yang disebutkan di atas. Untuk bacaan lebih lanjut, jalankan ' git reflog –help ”Dari jendela terminal.

Dengan ini, kami mengakhiri artikel ini di Git Reflog.Tujuan DevOps adalah membuat perangkat lunak berkualitas lebih baik dengan lebih cepat dan lebih andal sekaligus mengundang komunikasi dan kolaborasi yang lebih baik antar tim. Jika Anda tertarik dengan artikel ini, c lihat saja oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus Pelatihan Sertifikasi DevOps Edureka membantu pelajar untuk memahami apa itu DevOps dan mendapatkan keahlian dalam berbagai proses dan alat DevOps seperti Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack, dan GIT untuk mengotomatiskan beberapa langkah di SDLC.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar artikel 'Git Reflog' dan kami akan menghubungi Anda secepatnya.