Git Reflog: Memahami dan Menggunakan Reference Log di Git
Pelajari cara git reflog membantu melacak dan memulihkan commit yang hilang, membatalkan kesalahan, dan mengelola riwayat branch. Temukan kasus penggunaan praktis dan perintah untuk menguasai git reflog.
Tidak ada yang lebih menjengkelkan bagi developer atau data engineer selain tidak sengaja menghapus branch git atau me-reset commit saat Anda tidak menginginkannya. Karena itu, saya senang berbagi sesuatu yang saya pelajari dari pengalaman sendiri dan berharap saya mempelajarinya lebih cepat, yaitu cara menggunakan git reflog. git reflog adalah salah satu teknik yang sangat layak dipelajari; jika Anda meluangkan sedikit waktu sekarang, Anda bisa menghindari sakit kepala besar di kemudian hari.
Saya akan menunjukkan git reflog, yang menurut saya sangat membantu untuk menavigasi dan pulih dari kesalahan, dan saya juga ingin merekomendasikan kursus Foundations of Git dan Introduction to GitHub Concepts kami untuk mempelajari semua hal tentang version control.
Apa itu git reflog?
Git reflog, atau reference log, adalah mekanisme pelacakan lokal yang merekam pembaruan pada ujung branch dan referensi HEAD di sebuah repositori Git. (Dalam konteks Git, HEAD mengacu pada commit saat ini yang menjadi dasar working directory dan staging area Anda.)
Berbeda dengan git log, yang menampilkan riwayat commit berdasarkan garis keturunan, menunjukkan bagaimana commit terhubung dalam sebuah branch, git reflog menangkap semua pergerakan HEAD, termasuk perpindahan branch, rebase, reset, dan commit. Ini membuat reflog berguna untuk memulihkan commit yang hilang dan men-debug tindakan terbaru.
Kapan entri reflog dibuat?
Entri reflog dibuat setiap kali Anda melakukan tindakan yang mengubah status HEAD atau referensi branch. Skenario umum meliputi:
Melakukan commit perubahan menggunakan git commit.
Checkout ke branch lain menggunakan git checkout branch_name.
Membuat branch baru menggunakan git branch new_branch.
Rebase git rebase
Reset ke commit sebelumnya git reset --hard.
Menggabungkan branch menggunakan git merge.
Berikut adalah kode yang Anda gunakan untuk melacak pembaruan di repositori lokal:
Menggunakan git reflog untuk melacak pembaruan di repositori lokal. Gambar oleh Penulis.
Bagaimana cara menafsirkan output git reflog?
Anda dapat menafsirkannya sebagai berikut:
HEAD@{0}: Tindakan terbaru adalah beralih ke branch HEAD.
HEAD@{1}: Sebelumnya, saya mengubah tipe file dari format .xlxs ke .csv.
HEAD@{2}: Saya melakukan commit pertama saat mendorong file ke repositori.
Setiap entri menampilkan:
Commit hash (fa82776)
Indeks reflog (HEAD@{0}, HEAD@{1}, dll.)
Deskripsi tindakan yang dilakukan (commit, checkout, rebase)
Cara Menggunakan git reflog
Git reflog menyediakan cara untuk melacak pembaruan referensi dan memulihkan keadaan repositori Anda sebelumnya. Dengan memahami cara menavigasi entri reflog, Anda dapat memulihkan commit yang hilang, membatalkan perubahan, dan membandingkan versi pekerjaan Anda di masa lalu.
Perintah di atas menampilkan daftar tindakan terbaru yang memperbarui HEAD atau referensi branch, termasuk commit, perpindahan branch, reset, rebase, dan lainnya. Setiap entri diberi indeks, seperti HEAD@{0}, dan HEAD@{1}, untuk merepresentasikan posisinya dalam riwayat reflog.
Merujuk keadaan masa lalu
Git reflog berfungsi sebagai catatan pembaruan referensi di masa lalu, memungkinkan kita menemukan dan memulihkan titik-titik sebelumnya dalam riwayat repositori kita. Tanpanya, referensi ini tidak akan ada, dan kita membutuhkan commit hash yang tepat untuk kembali ke keadaan tertentu di masa lalu. Sekarang, mari kita lihat bagaimana Git memungkinkan kita menavigasi keadaan masa lalu menggunakan git checkout.
HEAD@{n}: Mengacu pada entri reflog tertentu, di mana n adalah indeksnya. Misalnya, HEAD@{2} mengacu pada keadaan HEAD ketiga yang paling baru.
Menggunakan git checkout untuk melacak perubahan masa lalu. Gambar oleh Penulis.
branch@{time}: Mengacu pada keadaan sebuah branch pada waktu tertentu. Misalnya, main@{1.week.ago} mengacu pada keadaan branch main satu minggu yang lalu sementara feature@{yesterday} mengacu pada keadaan branch feature kemarin.
Menggunakan git checkout untuk melacak perubahan masa lalu. Gambar oleh Penulis.
Kualifier berbasis waktu
git reflog tidak hanya membantu kita memulihkan keadaan masa lalu, tetapi juga memungkinkan kita membandingkannya. Karena reflog melacak pembaruan referensi, kita dapat menggunakannya untuk melihat bagaimana repositori berubah seiring waktu. Sekarang, mari lihat bagaimana git diff memanfaatkan entri reflog untuk membandingkan keadaan masa lalu dan saat ini.
Berikut adalah contoh kualifier waktu yang memudahkan memulihkan repositori Anda ke titik waktu tertentu alih-alih hanya mengandalkan nomor indeks reflog.
git checkout HEAD@{1.minute.ago}# State from one minute agoDidukung oleh
git checkout HEAD@{1.hour.ago}# State from one hour agoDidukung oleh
git checkout HEAD@{1.week.ago}# State from one week agoDidukung oleh
git checkout HEAD@{yesterday}# State from yesterdayDidukung oleh
git checkout HEAD@{2024-01-01.12:00:00}# State at a specific timestampDidukung oleh
Membandingkan keadaan masa lalu dengan git diff
Anda dapat membandingkan keadaan masa lalu menggunakan perintah seperti git diff. Perintah berikut membandingkan keadaan saat ini dari branch utama main@{0} dengan keadaannya satu hari yang lalu, main@{1.day.ago}. Output akan menampilkan perbedaan antara kedua snapshot tersebut.
Membandingkan keadaan masa lalu dengan git diff. Gambar oleh Penulis.
Kasus Penggunaan Umum untuk Git Reflog
Git reflog adalah alat yang sangat berharga untuk memulihkan perubahan yang hilang, membatalkan kesalahan, dan memperbaiki kekeliruan Git yang umum. Di bawah ini beberapa skenario praktis di mana git reflog dapat membantu.
Membatalkan reset yang buruk
Jika Anda keliru me-reset branch menggunakan git reset --hard, Anda dapat menggunakan reflog untuk memulihkan keadaan sebelumnya.
Jika Anda tidak sengaja menghapus sebuah branch atau kehilangan commit akibat reset atau rebase, Anda dapat menemukan commit yang hilang menggunakan git reflog.
Setelah Anda memverifikasi commit yang hilang, Anda dapat membuat branch baru untuk menyimpannya:
git branch recovered-branch <commit-hash>Didukung oleh
Memperbaiki rebase yang berantakan
Jika rebase berjalan tidak semestinya, Anda dapat menggunakan git reflog untuk menemukan commit sebelum rebase dan me-reset branch Anda. Identifikasi commit sebelum rebase dan reset.
git reset --hard HEAD@{3}# Adjust the number based on the reflog outputDidukung oleh
Memulihkan branch yang terhapus
Jika Anda tidak sengaja menghapus sebuah branch, Anda dapat memulihkannya menggunakan git reflog. Temukan commit terakhir yang diketahui dari branch yang dihapus dan buat kembali:
git branch restored-branch <commit-hash>Didukung oleh
Melacak riwayat stash
Git reflog juga dapat digunakan untuk melihat riwayat stash. Perintah di bawah ini mencantumkan operasi stash, memungkinkan Anda memulihkan stash yang lebih lama jika diperlukan.
Menggunakan git reflog show untuk menampilkan entri bagi referensi tertentu. Gambar oleh Penulis.
git reflog list: Perintah ini menampilkan semua referensi dengan reflog. Berguna untuk mengidentifikasi branch dan referensi HEAD dengan entri reflog yang tersimpan.
git reflog delete <ref>@{<specifier>}: Membersihkan entri reflog lama yang melampaui batas waktu yang ditentukan. Misalnya, perintah berikut menghapus entri yang lebih lama dari 30 hari.
git reflog delete <ref>@{<specifier>}: Menghapus entri reflog tertentu berdasarkan referensi dan posisinya. Perintah di bawah ini menghapus entri reflog pada indeks 2 untuk HEAD.
git reflog exists <ref>: Memverifikasi apakah reflog ada untuk referensi tertentu. Misalnya, perintah di bawah ini akan berhasil jika branch main memiliki reflog.
Berikut adalah opsi yang tersedia untuk subperintah git reflog dan penggunaannya.
--expire-unreachable=<time>: Memangkas hanya entri reflog yang tidak dapat dijangkau dari referensi mana pun. Misalnya, perintah di bawah ini menghapus entri reflog yang tidak dapat dijangkau dan berusia lebih dari 7 hari.
git reflog expire --expire-unreachable=7.days.agoDidukung oleh
--all: Memproses reflog untuk semua referensi, bukan hanya HEAD. Perintah di bawah ini membersihkan semua reflog yang lebih lama dari 60 hari di seluruh branch.
git reflog expire --expire=60.days.ago --allDidukung oleh
--dry-run: Mensimulasikan eksekusi perintah, menampilkan apa yang akan dipangkas tanpa benar-benar menghapus apa pun. Misalnya, perintah di bawah ini menampilkan entri mana yang akan dihapus.
git reflog expire --expire=30.days.ago --dry-runDidukung oleh
--verbose: Memberikan output terperinci tentang tindakan yang dilakukan oleh perintah. Perintah di bawah ini menampilkan detail verbose saat menghapus entri reflog lama.
git reflog expire --expire=90.days.ago --verboseDidukung oleh
Git Reflog vs. Git Log: Perbedaan Utama
Baik git log maupun git reflog memberikan wawasan tentang riwayat repositori, tetapi keduanya memiliki tujuan yang berbeda. Mari kita lihat perbedaan ini untuk memahami bagaimana masing-masing dapat digunakan untuk strategi version control dan pemulihan.
git log menampilkan riwayat commit dengan mengikuti garis keturunan commit dalam sebuah branch. Ini memberikan tampilan kronologis bagaimana konten repositori berkembang.
git reflog mencatat pembaruan pada referensi seperti HEAD, branch, dan stash, termasuk tindakan seperti perpindahan branch, reset, rebase, dan lainnya. Ini melacak perubahan yang mungkin tidak menjadi bagian dari garis keturunan commit.
git reflog bersifat lokal di mesin Anda dan tidak dibagikan ke repositori remote.
Sementara git log tidak dapat memulihkan commit yang tidak lagi menjadi bagian dari garis keturunan branch, git reflog dapat membantu memulihkan commit yang "hilang" dengan melacak pembaruan referensi, bahkan jika commit tersebut tidak lagi dapat dijangkau dari branch mana pun.
Tabel di bawah ini merangkum perbedaan utama tersebut.
Feature
git log
git reflog
Tracks commits
Yes
No
Track reference updates
No
Yes
Shared in remote
Yes
No
Can recover lost commits
No
Yes
Praktik Terbaik Menggunakan Git Reflog
Git reflog adalah alat yang kuat untuk memulihkan commit yang hilang dan memperbaiki masalah riwayat, tetapi menggunakannya secara efektif memerlukan kehati-hatian. Berikut beberapa praktik terbaik yang perlu diikuti saat bekerja dengan reflog.
Gunakan Reflog untuk Pemulihan dan Debugging: Jika Anda tidak sengaja me-reset atau me-rebase sebuah branch secara tidak benar, periksa git reflog untuk menemukan referensi sebelumnya dan memulihkannya.
Berhati-hatilah dengan git reset --hard: git reset --hard dapat secara permanen menghapus perubahan yang belum di-commit. Selalu periksa reflog terlebih dahulu untuk memastikan Anda dapat memulihkan jika terjadi kesalahan.
Simpan Cadangan Sebelum Menjalankan Perintah Destruktif: Untuk melindungi dari kehilangan data, terapkan pencadangan otomatis untuk repositori Git Anda. Selalu simpan cadangan di lokasi yang aman dan terpisah agar dapat dipulihkan jika terjadi kegagalan perangkat keras atau bencana lainnya.
Jangan Hanya Mengandalkan Reflog untuk Pemulihan Jangka Panjang: Secara default, entri reflog disimpan selama 90 hari. Setelah periode ini, entri dapat digarbage collect dan tidak dapat dipulihkan. Secara rutin dorong commit Anda ke repositori remote untuk memastikan entri tersebut tersimpan di luar reflog lokal Anda.
Gunakan git reflog expire untuk Mengelola Entri Lama: Jika reflog repositori Anda menjadi penuh, pangkas entri yang lebih lama atau tidak dapat dijangkau menggunakan git reflog expire.
Kesimpulan
Mengelola riwayat proyek secara efektif di Git memerlukan lebih dari sekadar perintah dasar. Menjelajahi alat tingkat lanjut yang melacak pembaruan referensi dapat memberikan jaring pengaman berharga untuk memulihkan commit yang hilang, memulihkan branch yang terhapus, dan memperbaiki kesalahan. Mendapatkan pengalaman langsung dengan alat-alat ini, bersama perintah seperti git reset, git checkout, dan git revert, dapat secara signifikan meningkatkan kemahiran Anda dalam version control.
Mengikuti kursus kami bukan hanya cara yang bagus untuk belajar tetapi juga cara yang baik untuk memberi sinyal kepada pemberi kerja bahwa Anda serius dengan pengembangan perangkat lunak. Untuk itu, saya merekomendasikan mempelajari posting blog Top 20 Git Interview Questions and Answers for All Levels dan mengikuti skill track baru kami Git Fundamentals untuk menjadi ahli dalam segala hal tentang Git.
Penulis teknis Data Science dengan pengalaman langsung dalam analitik data, business intelligence, dan data science. Saya menulis konten praktis berfokus industri tentang SQL, Python, Power BI, Databricks, dan rekayasa data, yang berakar pada pekerjaan analitik dunia nyata. Tulisan saya menjembatani kedalaman teknis dan dampak bisnis, membantu para profesional mengubah data menjadi keputusan yang meyakinkan.
git reflog FAQs
Apa itu Git reflog?⌄
Git reflog adalah reference log yang melacak pembaruan pada ujung branch dan HEAD, membantu pengguna memulihkan commit yang hilang dan membatalkan kesalahan.
Apa perbedaan Git reflog dengan Git log?⌄
git log melacak riwayat commit, sedangkan git reflog mencatat perubahan pada referensi seperti HEAD dan branch.
Apakah Git reflog dibagikan dengan repositori remote?⌄
Tidak, git reflog bersifat lokal dan tidak dibagikan saat mendorong ke repositori remote.
Apakah reflog melacak perubahan yang belum di-commit?⌄
Tidak, reflog hanya melacak perubahan referensi dan tidak merekam pekerjaan yang belum di-commit.
Tindakan apa yang membuat entri reflog?⌄
Commit, checkout branch, reset, rebase, merge, dan operasi stash semuanya menghasilkan entri reflog.
Berapa lama entri reflog bertahan?⌄
Secara default, entri reflog kedaluwarsa setelah 90 hari, tetapi hal ini dapat dikonfigurasi.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Tidak ada yang lebih menjengkelkan bagi developer atau data engineer selain tidak sengaja menghapus branch git atau me-reset commit saat Anda tidak menginginkannya. Karena itu, saya senang berbagi sesuatu yang saya pelajari dari pengalaman sendiri dan berharap saya mempelajarinya lebih cepat, yaitu cara menggunakan
git reflog.git reflogadalah salah satu teknik yang sangat layak dipelajari; jika Anda meluangkan sedikit waktu sekarang, Anda bisa menghindari sakit kepala besar di kemudian hari.Saya akan menunjukkan
git reflog, yang menurut saya sangat membantu untuk menavigasi dan pulih dari kesalahan, dan saya juga ingin merekomendasikan kursus Foundations of Git dan Introduction to GitHub Concepts kami untuk mempelajari semua hal tentang version control.Apa itu git reflog?
Git reflog, atau reference log, adalah mekanisme pelacakan lokal yang merekam pembaruan pada ujung branch dan referensi HEAD di sebuah repositori Git. (Dalam konteks Git, HEAD mengacu pada commit saat ini yang menjadi dasar working directory dan staging area Anda.)
Berbeda dengan
git log, yang menampilkan riwayat commit berdasarkan garis keturunan, menunjukkan bagaimana commit terhubung dalam sebuah branch,git reflogmenangkap semua pergerakan HEAD, termasuk perpindahan branch, rebase, reset, dan commit. Ini membuat reflog berguna untuk memulihkan commit yang hilang dan men-debug tindakan terbaru.Kapan entri reflog dibuat?
Entri reflog dibuat setiap kali Anda melakukan tindakan yang mengubah status HEAD atau referensi branch. Skenario umum meliputi:
Melakukan commit perubahan menggunakan
git commit.Checkout ke branch lain menggunakan
git checkout branch_name.Membuat branch baru menggunakan
git branch new_branch.Rebase
git rebaseReset ke commit sebelumnya
git reset --hard.Menggabungkan branch menggunakan
git merge.Berikut adalah kode yang Anda gunakan untuk melacak pembaruan di repositori lokal:
Menggunakan git reflog untuk melacak pembaruan di repositori lokal. Gambar oleh Penulis.
Bagaimana cara menafsirkan output git reflog?
Anda dapat menafsirkannya sebagai berikut:
HEAD@{0}: Tindakan terbaru adalah beralih ke branch HEAD.HEAD@{1}: Sebelumnya, saya mengubah tipe file dari format.xlxske.csv.HEAD@{2}: Saya melakukan commit pertama saat mendorong file ke repositori.Setiap entri menampilkan:
Commit hash (
fa82776)Indeks reflog (
HEAD@{0},HEAD@{1}, dll.)Deskripsi tindakan yang dilakukan (commit, checkout, rebase)
Cara Menggunakan git reflog
Git reflog menyediakan cara untuk melacak pembaruan referensi dan memulihkan keadaan repositori Anda sebelumnya. Dengan memahami cara menavigasi entri reflog, Anda dapat memulihkan commit yang hilang, membatalkan perubahan, dan membandingkan versi pekerjaan Anda di masa lalu.
Perintah dasar git reflog
Di bawah ini adalah perintah reflog dasar:
Perintah di atas menampilkan daftar tindakan terbaru yang memperbarui HEAD atau referensi branch, termasuk commit, perpindahan branch, reset, rebase, dan lainnya. Setiap entri diberi indeks, seperti
HEAD@{0}, danHEAD@{1}, untuk merepresentasikan posisinya dalam riwayat reflog.Merujuk keadaan masa lalu
Git reflog berfungsi sebagai catatan pembaruan referensi di masa lalu, memungkinkan kita menemukan dan memulihkan titik-titik sebelumnya dalam riwayat repositori kita. Tanpanya, referensi ini tidak akan ada, dan kita membutuhkan commit hash yang tepat untuk kembali ke keadaan tertentu di masa lalu. Sekarang, mari kita lihat bagaimana Git memungkinkan kita menavigasi keadaan masa lalu menggunakan
git checkout.HEAD@{n}: Mengacu pada entri reflog tertentu, di mananadalah indeksnya. Misalnya,HEAD@{2}mengacu pada keadaan HEAD ketiga yang paling baru.Menggunakan git checkout untuk melacak perubahan masa lalu. Gambar oleh Penulis.
branch@{time}: Mengacu pada keadaan sebuah branch pada waktu tertentu. Misalnya,main@{1.week.ago}mengacu pada keadaan branch main satu minggu yang lalu sementarafeature@{yesterday}mengacu pada keadaan branch feature kemarin.Menggunakan git checkout untuk melacak perubahan masa lalu. Gambar oleh Penulis.
Kualifier berbasis waktu
git reflogtidak hanya membantu kita memulihkan keadaan masa lalu, tetapi juga memungkinkan kita membandingkannya. Karenareflogmelacak pembaruan referensi, kita dapat menggunakannya untuk melihat bagaimana repositori berubah seiring waktu. Sekarang, mari lihat bagaimanagit diffmemanfaatkan entri reflog untuk membandingkan keadaan masa lalu dan saat ini.Berikut adalah contoh kualifier waktu yang memudahkan memulihkan repositori Anda ke titik waktu tertentu alih-alih hanya mengandalkan nomor indeks reflog.
Membandingkan keadaan masa lalu dengan git diff
Anda dapat membandingkan keadaan masa lalu menggunakan perintah seperti
git diff. Perintah berikut membandingkan keadaan saat ini dari branch utamamain@{0}dengan keadaannya satu hari yang lalu,main@{1.day.ago}. Output akan menampilkan perbedaan antara kedua snapshot tersebut.Membandingkan keadaan masa lalu dengan git diff. Gambar oleh Penulis.
Kasus Penggunaan Umum untuk Git Reflog
Git reflog adalah alat yang sangat berharga untuk memulihkan perubahan yang hilang, membatalkan kesalahan, dan memperbaiki kekeliruan Git yang umum. Di bawah ini beberapa skenario praktis di mana
git reflogdapat membantu.Membatalkan reset yang buruk
Jika Anda keliru me-reset branch menggunakan
git reset --hard, Anda dapat menggunakan reflog untuk memulihkan keadaan sebelumnya.Memulihkan commit yang hilang
Jika Anda tidak sengaja menghapus sebuah branch atau kehilangan commit akibat reset atau rebase, Anda dapat menemukan commit yang hilang menggunakan
git reflog.Temukan commit hash dari output reflog dan checkout:
Setelah Anda memverifikasi commit yang hilang, Anda dapat membuat branch baru untuk menyimpannya:
Memperbaiki rebase yang berantakan
Jika rebase berjalan tidak semestinya, Anda dapat menggunakan
git refloguntuk menemukan commit sebelum rebase dan me-reset branch Anda. Identifikasi commit sebelum rebase dan reset.Memulihkan branch yang terhapus
Jika Anda tidak sengaja menghapus sebuah branch, Anda dapat memulihkannya menggunakan
git reflog. Temukan commit terakhir yang diketahui dari branch yang dihapus dan buat kembali:Melacak riwayat stash
Git reflog juga dapat digunakan untuk melihat riwayat stash. Perintah di bawah ini mencantumkan operasi stash, memungkinkan Anda memulihkan stash yang lebih lama jika diperlukan.
Untuk menerapkan entri stash sebelumnya, gunakan perintah berikut:
Lihat tutorial Git Pull Force: How to Overwrite a Local Branch With Remote untuk mempelajari praktik terbaik menimpa perubahan lokal.
Subperintah dan Opsi Git Reflog
Git menyediakan beberapa subperintah dan opsi untuk mengelola dan berinteraksi dengan reflog.
Subperintah git reflog
Di bawah ini adalah rincian terstruktur dari subperintah
git reflogutama dan penggunaannya.git reflog show: Menampilkan entri reflog untuk HEAD secara default atau untuk referensi tertentu seperti sebuah branch.Menggunakan git reflog show untuk menampilkan entri bagi referensi tertentu. Gambar oleh Penulis.
git reflog list: Perintah ini menampilkan semua referensi dengan reflog. Berguna untuk mengidentifikasi branch dan referensi HEAD dengan entri reflog yang tersimpan.git reflog delete <ref>@{<specifier>}: Membersihkan entri reflog lama yang melampaui batas waktu yang ditentukan. Misalnya, perintah berikut menghapus entri yang lebih lama dari 30 hari.git reflog delete <ref>@{<specifier>}: Menghapus entri reflog tertentu berdasarkan referensi dan posisinya. Perintah di bawah ini menghapus entri reflog pada indeks2untukHEAD.git reflog exists <ref>: Memverifikasi apakah reflog ada untuk referensi tertentu. Misalnya, perintah di bawah ini akan berhasil jika branch main memiliki reflog.Opsi untuk subperintah git reflog
Berikut adalah opsi yang tersedia untuk subperintah
git reflogdan penggunaannya.--expire-unreachable=<time>: Memangkas hanya entri reflog yang tidak dapat dijangkau dari referensi mana pun. Misalnya, perintah di bawah ini menghapus entri reflog yang tidak dapat dijangkau dan berusia lebih dari 7 hari.--all: Memproses reflog untuk semua referensi, bukan hanyaHEAD. Perintah di bawah ini membersihkan semua reflog yang lebih lama dari 60 hari di seluruh branch.--dry-run: Mensimulasikan eksekusi perintah, menampilkan apa yang akan dipangkas tanpa benar-benar menghapus apa pun. Misalnya, perintah di bawah ini menampilkan entri mana yang akan dihapus.--verbose: Memberikan output terperinci tentang tindakan yang dilakukan oleh perintah. Perintah di bawah ini menampilkan detail verbose saat menghapus entri reflog lama.Git Reflog vs. Git Log: Perbedaan Utama
Baik
git logmaupungit reflogmemberikan wawasan tentang riwayat repositori, tetapi keduanya memiliki tujuan yang berbeda. Mari kita lihat perbedaan ini untuk memahami bagaimana masing-masing dapat digunakan untuk strategi version control dan pemulihan.git logmenampilkan riwayat commit dengan mengikuti garis keturunan commit dalam sebuah branch. Ini memberikan tampilan kronologis bagaimana konten repositori berkembang.git reflogmencatat pembaruan pada referensi seperti HEAD, branch, dan stash, termasuk tindakan seperti perpindahan branch, reset, rebase, dan lainnya. Ini melacak perubahan yang mungkin tidak menjadi bagian dari garis keturunan commit.git reflogbersifat lokal di mesin Anda dan tidak dibagikan ke repositori remote.Sementara
git logtidak dapat memulihkan commit yang tidak lagi menjadi bagian dari garis keturunan branch,git reflogdapat membantu memulihkan commit yang "hilang" dengan melacak pembaruan referensi, bahkan jika commit tersebut tidak lagi dapat dijangkau dari branch mana pun.Tabel di bawah ini merangkum perbedaan utama tersebut.
Praktik Terbaik Menggunakan Git Reflog
Git reflog adalah alat yang kuat untuk memulihkan commit yang hilang dan memperbaiki masalah riwayat, tetapi menggunakannya secara efektif memerlukan kehati-hatian. Berikut beberapa praktik terbaik yang perlu diikuti saat bekerja dengan reflog.
Gunakan Reflog untuk Pemulihan dan Debugging: Jika Anda tidak sengaja me-reset atau me-rebase sebuah branch secara tidak benar, periksa
git refloguntuk menemukan referensi sebelumnya dan memulihkannya.Berhati-hatilah dengan
git reset --hard:git reset --harddapat secara permanen menghapus perubahan yang belum di-commit. Selalu periksa reflog terlebih dahulu untuk memastikan Anda dapat memulihkan jika terjadi kesalahan.Simpan Cadangan Sebelum Menjalankan Perintah Destruktif: Untuk melindungi dari kehilangan data, terapkan pencadangan otomatis untuk repositori Git Anda. Selalu simpan cadangan di lokasi yang aman dan terpisah agar dapat dipulihkan jika terjadi kegagalan perangkat keras atau bencana lainnya.
Jangan Hanya Mengandalkan Reflog untuk Pemulihan Jangka Panjang: Secara default, entri reflog disimpan selama 90 hari. Setelah periode ini, entri dapat digarbage collect dan tidak dapat dipulihkan. Secara rutin dorong commit Anda ke repositori remote untuk memastikan entri tersebut tersimpan di luar reflog lokal Anda.
Gunakan
git reflog expireuntuk Mengelola Entri Lama: Jika reflog repositori Anda menjadi penuh, pangkas entri yang lebih lama atau tidak dapat dijangkau menggunakangit reflog expire.Kesimpulan
Mengelola riwayat proyek secara efektif di Git memerlukan lebih dari sekadar perintah dasar. Menjelajahi alat tingkat lanjut yang melacak pembaruan referensi dapat memberikan jaring pengaman berharga untuk memulihkan commit yang hilang, memulihkan branch yang terhapus, dan memperbaiki kesalahan. Mendapatkan pengalaman langsung dengan alat-alat ini, bersama perintah seperti
git reset,git checkout, dangit revert, dapat secara signifikan meningkatkan kemahiran Anda dalam version control.Mengikuti kursus kami bukan hanya cara yang bagus untuk belajar tetapi juga cara yang baik untuk memberi sinyal kepada pemberi kerja bahwa Anda serius dengan pengembangan perangkat lunak. Untuk itu, saya merekomendasikan mempelajari posting blog Top 20 Git Interview Questions and Answers for All Levels dan mengikuti skill track baru kami Git Fundamentals untuk menjadi ahli dalam segala hal tentang Git.