Yang harus dilakukan sekarang
- Periksa Recycle Bin, lalu clone ulang repositori jika proyek sudah di-push ke remote.
- Jika folder .git masih ada, gunakan git restore, git reflog, dan git stash untuk mengembalikan file dan commit.
- Untuk pekerjaan yang belum di-commit, periksa Timeline VS Code atau Local History JetBrains sebelum memindai drive dari USB.
Langkah demi langkah
Hentikan build dan periksa Recycle Bin
Jangan menjalankan instalasi paket, build, atau tes di drive itu, karena semuanya menulis ribuan file. Periksa Recycle Bin dulu: penghapusan dari File Explorer atau banyak IDE biasanya masuk ke sana, sedangkan perintah seperti rm -rf, del, Remove-Item, atau git clean melewatinya.
Clone ulang dari remote
Jika proyek sudah di-push ke GitHub, GitLab, atau server lain, clone ulang ke folder baru. Semua yang sudah di-commit dan di-push kembali persis sama. Yang masih hilang hanya pekerjaan lokal yang belum pernah di-push.
Gunakan git bila folder .git selamat
Jika hanya beberapa file yang terhapus, git status menampilkannya dan git restore diikuti jalurnya biasanya mengembalikan versi commit terakhir. Setelah git reset --hard yang keliru, git reflog menampilkan commit sebelumnya yang bisa dituju kembali. Periksa git stash list untuk pekerjaan yang disimpan sementara. File yang sudah git add tetapi belum di-commit kadang dapat ditemukan dengan git fsck --lost-found.
Periksa riwayat lokal editor
Di VS Code, buka tampilan Timeline untuk sebuah file; riwayat lokal disimpan terpisah dari proyek. Untuk file yang terhapus, membuat file kosong di jalur yang sama sering memunculkan entri lamanya. Di IDE JetBrains, klik kanan folder proyek lalu buka Local History dan Show History, tempat file terhapus tercantum dan dapat dikembalikan.
Pindai drive untuk mencari folder
Jalankan versi portabel FileFix Ultimate dari USB, buka Pulihkan file terhapus, pilih drive, lalu mulai Pindai seimbang. Telusuri pohon folder sampai jalur proyek, atau saring menurut ekstensi seperti cs, py, js, ts, atau java. Lewati folder dependensi dan build karena bisa dibuat ulang.
Simpan di tempat lain dan periksa kodenya
Simpan folder hasil pemulihan ke disk fisik lain. Buka di lokasi baru, jalankan build dan tes, lalu bandingkan dengan remote memakai git diff, karena file yang kembali dalam keadaan sebagian tertimpa bisa terlihat wajar pada pandangan pertama.
Mengapa git biasanya lebih unggul daripada pemindaian disk
Folder .git menyimpan setiap versi yang sudah di-commit dari setiap file yang dilacak dalam bentuk terkompresi. Selama folder itu ada, di komputer atau di remote, kode yang sudah di-commit tidak benar-benar hilang; tinggal memakai perintah yang tepat. Karena itu menghapus folder proyek beserta .git lebih merugikan daripada menghapus beberapa file, sebab riwayatnya ikut hilang bila belum di-push.
Perubahan yang belum di-commit berbeda. Git tidak pernah melihatnya, sehingga sumber yang realistis adalah riwayat lokal editor, cadangan tab yang belum disimpan, dan disk itu sendiri. Fitur pencari file yang belum disimpan di FileFix Ultimate juga mencari salinan cadangan VS Code dan Notepad++, yang mungkin berisi kode dari tab yang masih terbuka saat editor ditutup.
Apa yang bisa dan tidak bisa dilakukan pemindaian pada file kode
Foto dan dokumen diawali header yang mudah dikenali, sehingga pencarian tanda tangan tetap menemukannya meski sistem file sudah melupakannya. Kode sumber adalah teks biasa tanpa header seperti itu. Untuk kode, semuanya bergantung pada catatan sistem file: jika entri NTFS folder yang terhapus masih ada, nama, jalur, dan struktur folder kembali bersama; jika sudah dipakai ulang, file teks praktis tidak dapat ditemukan.
Di NTFS, file yang sangat kecil sering disimpan langsung di dalam catatan filenya, itulah sebabnya file konfigurasi dan kode yang pendek kadang selamat ketika file besar sudah hilang. Aset biner dalam proyek seperti gambar, arsip, atau basis data SQLite masih dapat ditemukan lewat tanda tangan, tetapi tanpa nama.
Proyek di dalam WSL atau mesin virtual
Kode yang disimpan di WSL 2 berada di file disk virtual, biasanya bernama ext4.vhdx, yang berisi sistem file ext4. Jalankan wsl --shutdown, salin file itu ke disk lain, lalu buka salinannya; FileFix Ultimate dapat membuka image VHDX dan membaca ext4 dalam mode hanya baca. File yang dihapus di ext4 lebih sulit dipulihkan beserta namanya dibanding di NTFS, jadi anggap ini peluang, bukan jalan yang pasti. Disk VMDK, VHDX, dan QCOW2 milik mesin virtual dapat dibuka dengan cara yang sama.
Kapan tidak berhasil
- Sebagian besar komputer pengembang memakai SSD dengan TRIM, yang dapat menghapus file terhapus hampir seketika; kode yang belum di-commit mungkin hilang selamanya.
- Jika setelah penghapusan ada instalasi paket atau build di drive yang sama, ruang kosongnya kemungkinan sudah dipakai ulang.
- Tanpa catatan sistem file yang tersisa, file kode berupa teks biasa tidak dapat ditemukan lewat tanda tangan.
- Pekerjaan yang tidak pernah di-commit, di-push, atau tercatat di riwayat editor tidak punya salinan untuk dikembalikan setelah ruang disk tertimpa.
Bagaimana FileFix Ultimate membantu
- Gratis untuk penggunaan pribadi dan tanpa batas (penggunaan kerja memerlukan lisensi tahunan per PC), dengan versi portabel yang berjalan dari USB sehingga tidak ada tulisan baru ke drive pengembangan.
- Membangun ulang pohon folder yang terhapus dari catatan NTFS, FAT32, dan exFAT, sambil mempertahankan nama file dan jalur bila catatannya masih ada.
- Menemukan cadangan VS Code dan Notepad++ dari tab editor yang belum disimpan melalui pencari file yang belum disimpan.
- Membuka image VHDX, VMDK, dan QCOW2 serta membaca ext4 dalam mode hanya baca untuk kode di WSL atau mesin virtual.
FileFix Ultimate gratis untuk penggunaan pribadi, bekerja offline, dan tidak pernah menulis ke drive yang sedang Anda pulihkan. Penggunaan untuk bisnis atau pekerjaan memerlukan lisensi 1 tahun per PC. Periksa tanda tangan sebelum menjalankannya.
Pertanyaan umum
Saya menjalankan git reset --hard. Bisakah commit saya kembali?
Biasanya bisa. Jalankan git reflog, cari commit sebelum reset, lalu buat branch di sana atau reset kembali ke sana. Perubahan yang tidak pernah di-commit tidak ada di reflog; hanya yang sudah di-stage mungkin ditemukan dengan git fsck.
Apakah git clean memindahkan file ke Recycle Bin?
Tidak. git clean langsung menghapus file yang tidak dilacak, sehingga file itu tidak muncul di Recycle Bin. Pilihan yang tersisa adalah riwayat lokal editor atau pemindaian disk.
Perlukah node_modules dan folder build ikut dipulihkan?
Tidak. Keduanya dibuat ulang dari file proyek dan file lock, jadi lebih cepat dan aman memasangnya kembali setelah kode sumber kembali. Tanpa keduanya, hasil pemulihan juga lebih kecil dan lebih cepat diperiksa.
Apakah file hasil pemulihan tetap memiliki nama dan foldernya?
Ya, bila ditemukan melalui catatan sistem file. File kode tidak dapat ditemukan dengan cara lain, jadi file yang muncul di pohon folder biasanya muncul beserta namanya.