Cara Menghapus File dari Repositori Git Tanpa Merusak Proyek Anda
Pelajari cara menghapus file di repositori Git, hindari kesalahan umum, dan kelola repositori Anda dengan rapi bahkan pada skenario yang kompleks atau sensitif.
Menghapus file di Git tidak selalu sesederhana kelihatannya. Anda menghapus file dari sistem, tetapi itu tidak berarti file tersebut hilang dari repositori. File itu mungkin masih ada di riwayat Anda, atau lebih buruk lagi, ikut ter-commit tanpa sengaja, seperti file konfigurasi atau kunci API.
Dalam panduan ini, Anda akan mempelajari cara menghapus file dari Git. Kita akan mulai dengan perintah dasar seperti git rm, lalu masuk ke metode yang lebih lanjut seperti membersihkan file yang tidak dilacak dan mengedit riwayat commit Anda.
Prasyarat
Sebelum kita menghapus file dengan Git, mari pastikan semuanya sudah siap.
Pertama, periksa apakah Git sudah terpasang. Buka terminal Anda dan jalankan:
Jika Anda melihat nomor versi, berarti Anda siap lanjut.
Jika Anda melihat nomor versi, berarti Anda siap lanjut.
Anda juga bisa memasang GUI Git seperti GitHub Desktop, Sourcetree, atau GitKraken jika Anda lebih suka antarmuka visual. Namun dalam panduan ini, saya akan menggunakan baris perintah (Git Bash).
Pastikan Anda memiliki izin untuk melakukan perubahan di repositori, terutama jika Anda bagian dari tim atau bekerja dengan repo remote seperti GitHub atau GitLab.
Catatan: Beberapa aksi penghapusan file tidak bisa dibatalkan. Jadi, sebaiknya buat cadangan proyek Anda atau setidaknya periksa ulang keadaan repo Anda sebelum menjalankan perintah yang menghapus file.
Jika sudah, mari mulai.
Penghapusan File Dasar di Git
Ada beberapa cara untuk menghapus file di Git, bergantung pada apa yang ingin Anda lakukan. Mari lihat beberapa opsi umum:
Menggunakan git rm
Perintah git rm menghapus file dari repositori Git Anda. Saat Anda menjalankannya, dua hal terjadi:
Git menghapus file dari working directory Anda
Git menandai perubahan itu untuk commit berikutnya (staged)
Namun Git tidak hanya menghapus file. Git melacak penghapusan itu di riwayat Anda. Setelah Anda commit, file tersebut resmi dihapus dari proyek.
Ini menghapus setiap file di dalam folder temp tanpa menghapus foldernya.
Git juga menambahkan beberapa pemeriksaan keamanan. Jika sebuah file memiliki perubahan yang belum di-commit, Git tidak akan menghapusnya kecuali Anda memaksa. Jadi gunakan ini hanya jika Anda yakin perubahan tersebut bisa dibuang:
(Di sini, * berarti semua. Ini mencocokkan nama file apa pun yang berakhiran .txt.)
2. --cached
Ini menghapus file dari repositori tetapi menyimpannya di komputer Anda. Misalkan saya tidak sengaja menambahkan file sensitif seperti config.env. Saya tidak menginginkannya di repo, tetapi saya masih membutuhkannya di mesin saya. Jadi saya akan menjalankan:
Di sini, git rm akan menghapusnya dari repositori dan working directory. Dan --cached menghentikan pelacakannya oleh Git (jadi tidak akan didorong/pushed), tetapi membiarkannya tetap ada secara fisik.
Untuk mencegahnya ditambahkan lagi, tambahkan ke .gitignore:
Ini singkatan dari recursive. Alih-alih satu file, ini menghapus direktori dan isinya secara rekursif. Tanpa ini, Git akan memberi Anda error jika Anda mencoba menghapus folder.
Jika Anda menggunakan git rm, ini menangani semuanya dalam satu langkah. Ini menghapus file dan langsung menandai perubahannya:
git rm file.txtgit commit -m "Remove file.txt"Didukung oleh
Tidak perlu menjalankan git add secara terpisah. Ini lebih bersih dan Anda tidak akan lupa menandai penghapusannya.
Singkatnya:
Penghapusan manual memerlukan langkah tambahan untuk memastikan Git menangkap perubahannya.
Jika Anda lupa menandai penghapusan, Git masih menganggap file itu ada, yang dapat menimbulkan kebingungan saat commit atau merge.
git rm lebih bersih dan lebih aman saat Anda sengaja menghapus file yang dilacak.
Mengembalikan file yang terhapus di Git
Bagaimana jika Anda menghapus file dan kemudian menyadari Anda masih membutuhkannya? Tidak masalah. Git memberi Anda beberapa cara untuk mengembalikannya bergantung pada kapan Anda menyadari kesalahan tersebut.
Jika Anda belum melakukan commit:
Misalkan Anda menghapus file tetapi belum melakukan commit atas perubahan tersebut. Anda bisa memulihkannya dari commit terakhir seperti ini:
Pada versi Git yang lebih lama, Anda bisa menggunakan perintah di atas. Perintah ini memulihkan file dari commit tertentu, tetapi juga bisa memindahkan branch.
Mulai Git 2.23, ini dipecah menjadi dua perintah yang lebih jelas:
git switch (untuk berpindah branch)
git restore (untuk memulihkan file)
Jika Anda hanya ingin memulihkan file dari sebuah commit, gunakan:
git restore --source=<commit-hash> --file.txtDidukung oleh
Ini mengambil file dari commit tersebut dan mengembalikannya ke working directory Anda.
Jika Anda tidak yakin kapan file itu dihapus:
Mungkin Anda telah membuat banyak perubahan dan tidak ingat kapan file itu hilang. Dalam kasus itu, gunakan git reflog atau reference log:
Ini menampilkan riwayat lengkap commit, checkout, reset, dan semuanya di Git Anda.
Namun git reflog hanya lokal dan tidak akan berfungsi di remote. Jika Anda bekerja dengan repo remote, lebih baik gunakan git log -- file.txt untuk melacak riwayat file tersebut.
Setelah Anda menemukan titik di mana file itu masih ada, pulihkan menggunakan git checkout atau git restore seperti sebelumnya.
Memperbaiki File yang Hilang di Git
Terkadang file terhapus langsung dari sistem—mungkin lewat file explorer, perintah rm di terminal, atau bahkan tidak sengaja. Ketika ini terjadi, Git tidak otomatis merapikan. Sebagai gantinya, Git menandai file-file itu sebagai hilang dan menunggu Anda menangani penghapusan dengan benar.
Mari lihat cara menanganinya langkah demi langkah.
Ganti <branch-name> dengan branch yang Anda gunakan, seperti main atau dev.
Langkah 4: Alternatif
Misalkan Anda telah menghapus banyak file secara manual, mungkin tidak sengaja, atau saat bersih-bersih. Git masih menganggap file-file itu ada sampai Anda memberi tahu sebaliknya.
Jika Anda tidak ingin menghapus satu per satu dengan git rm, ada cara yang lebih cepat untuk merapikan.
Jalankan perintah ini di terminal Anda:
git ls-files --deleted -z | xargs -0 git rmDidukung oleh
Begini cara kerjanya:
git ls-files --deleted menampilkan semua file yang dilacak Git tetapi kini hilang.
xargs -0 git rm meneruskan nama-nama file itu ke git rm dan menghapusnya dari indeks Git.
Ini sangat membantu saat Anda bekerja pada proyek besar dan ingin merapikan dengan cepat.
Catatan: Saya mendapatkan pesan ini karena tidak ada file yang dilacak yang saat ini hilang dari disk Anda.
Penghapusan File Tingkat Lanjut di Git
Setelah membahas dasar-dasarnya, mari lihat situasi yang lebih lanjut di mana menghapus file dari Git tidak sesederhana menjalankan git rm. Ini adalah kasus ketika data sensitif terlibat atau file yang tidak dilacak perlu dibersihkan dengan hati-hati.
Hapus data sensitif dari Git
Terkadang file dengan data pribadi, seperti kunci API atau kata sandi, tidak sengaja ter-commit. Menghapusnya secara normal tidak akan membantu. Karena Git menyimpan riwayat lengkap, dan file itu masih ada pada commit sebelumnya.
Untuk menghapusnya sepenuhnya, Anda dapat menggunakan perintah git filter-repo: git filter-repo (disarankan)
Ini adalah alternatif yang lebih baru dan lebih baik daripada filter-branch. Lebih cepat, lebih aman, dan lebih mudah digunakan.
Pertama, pasang alatnya (Anda memerlukan Python dan pip):
Lalu beri tahu rekan tim Anda. Mereka perlu meng-kloning ulang atau mereset salinan lokal mereka untuk menghindari error.
Bersihkan file tidak terlacak dengan git clean
Mari uraikan:
File yang dilacak ada di riwayat Git. Untuk menghapusnya, gunakan git rm, lalu commit.
File yang tidak dilacak tidak ada di Git sama sekali. File ini bisa menumpuk dan mengotori proyek Anda.
Untuk menghapus file atau folder yang tidak dilacak, gunakan git clean.
Berikut opsi yang paling berguna:
git clean -n # Show which untracked files will be removedgit clean -nd # Show which untracked folders will be removedgit clean -fd # Delete all untracked files and folders. It is destructive.Didukung oleh
Berikut artinya:
-n berarti pratinjau saja.
-f berarti paksa hapus.
-d menyertakan folder dalam pembersihan.
Catatan: git clean tidak akan menyentuh file yang dilacak. Tetapi ini akan menghapus apa pun yang tidak dilacak, bahkan file yang sebenarnya ingin Anda simpan. Jadi, selalu gunakan -n terlebih dahulu untuk melihat apa yang akan dihapus.
Penghapusan File di GitHub & Alat GUI
Sebagian besar yang kita bahas sejauh ini menggunakan baris perintah. Namun tidak semua orang bekerja seperti itu dan itu tidak masalah. Beberapa pengembang menggunakan alat visual saat bekerja langsung di GitHub.
Jadi mari lihat bagaimana menghapus file di antarmuka web GitHub dan alat GUI lainnya, serta bagaimana perbandingannya dengan baris perintah.
Hapus file di situs GitHub
Jika Anda bekerja di antarmuka peramban GitHub, Anda bisa menghapus file tanpa menggunakan terminal.
Begini cara kerjanya di antarmuka 2025:
Buka file yang ingin Anda hapus.
Klik tiga titik di pojok kanan atas.
Pilih Delete file dari menu dropdown.
GitHub kemudian akan menampilkan kotak pesan commit. Tambahkan pesan singkat seperti:
Atau buat branch baru dan mulai pull request (disarankan untuk alur kerja tim)
Klik Commit changes, dan GitHub akan menghapus file serta menyimpan penghapusannya sebagai commit, sama seperti yang dilakukan git rm dari baris perintah.
Hapus file dengan alat GUI Git
Jika Anda menggunakan GUI Git seperti GitHub Desktop, Sourcetree, atau Tower, prosesnya juga sederhana:
Hapus file di file explorer Anda atau di dalam aplikasi.
Aplikasi akan menampilkan penghapusan di bawah “Changes” atau “File Status.”
Tinjau, tandai (stage), dan commit perubahannya.
Setiap alat tampilannya sedikit berbeda, tetapi alur kerjanya serupa: Anda melacak perubahan secara visual, dan melakukan commit saat siap.
Praktik terbaik per platform
Berikut gambaran singkat cara kerja penghapusan file di berbagai platform, dan kapan masing-masing paling berguna:
GitHub (Web): Bagus untuk perbaikan cepat dan pembaruan kecil. Hindari untuk pembersihan besar atau file sensitif.
Alat GUI Git: Cocok untuk pekerjaan harian. Mudah melihat perubahan dan melakukan commit dengan aman.
Baris perintah: Paling fleksibel dan membantu. Terbaik untuk tugas lanjutan seperti suntingan massal atau perubahan riwayat.
Praktik Terbaik untuk Penghapusan File di Git
Menghapus file di Git mungkin terlihat sederhana, tetapi satu langkah yang salah bisa merusak kode Anda. Berikut beberapa kiat praktis yang saya gunakan untuk memastikan penghapusan aman dan terkendali, terutama pada proyek bersama atau jangka panjang.
Selalu verifikasi sebelum menghapus
Sebelum menghapus file, luangkan waktu sejenak untuk memastikan fungsinya:
Jalankan git status untuk melihat apakah file itu sudah ditandai atau dimodifikasi.
Gunakan git log -- <filename> untuk memeriksa riwayat commit-nya.
Pemeriksaan cepat ini menyelamatkan saya dari berjam-jam kerja pemulihan nanti.
Gunakan commit atomik
Commit atomik berarti satu commit per perubahan logis.
Misalnya, jika saya menghapus file yang tidak digunakan, saya hanya melakukan commit penghapusan itu, terpisah dari penyuntingan kode.
Berikut mengapa ini sangat membantu:
Debugging lebih mudah. Alat seperti git bisect bekerja lebih baik saat commit kecil dan terfokus.
Riwayat commit tetap bersih dan jelas.
Code review jadi lebih cepat.
Bekerja sama dengan hati-hati saat menulis ulang riwayat
Menulis ulang riwayat dengan alat seperti git filter-repo memengaruhi semua orang di tim Anda. Untuk menghindari kekacauan:
Komunikasikan sebelum menulis ulang branch bersama.
Gunakan git push --force dengan hati-hati karena ini menulis ulang riwayat remote.
Beri tahu rekan tim untuk meng-kloning ulang atau mereset repo lokal mereka setelahnya.
Gunakan --dry-run sebelum menjalankan perintah destruktif
Sebelum menjalankan perintah yang menghapus file, selalu uji dulu:
Menjaga file sensitif atau lokal (seperti .env, .log, atau node_modules) tetap di luar repo.
Mencegah kekacauan di riwayat Git Anda.
Perubahan selanjutnya pada file tersebut tidak akan memicu perubahan di Git.
Kasus Tepi Git: Staging & Folder Kosong
Terkadang penghapusan file tidak berjalan seperti yang diharapkan. Anda bisa saja menandai file yang salah atau menemui masalah dengan folder kosong.
Berikut cara saya menangani kasus tepi yang umum.
Batalkan staging file tanpa menghapus perubahan Anda
Misalkan saya menjalankan git add . dan tanpa sengaja menandai sebuah file yang tidak saya maksud. Saya tidak ingin kehilangan perubahan—saya hanya ingin membatalkan staging-nya.
Sekarang file tersebut akan tampil sebagai "modified" alih-alih "staged."
Mempertahankan folder kosong di repo
Secara bawaan, Git mengabaikan folder kosong. Jika saya mencoba meng-commit folder tanpa file di dalamnya, Git akan melewatinya.
Namun terkadang saya ingin mempertahankan folder itu di repo untuk log atau unggahan di masa mendatang. Solusi biasanya adalah menambahkan file placeholder bernama .gitkeep.
Begini caranya:
touch logs/.gitkeepgit add logs/.gitkeepgit commit -m "Keep logs folder in the repo"Didukung oleh
Ini membuat folder menjadi "tidak kosong," sehingga Git melacaknya.
Catatan: .gitkeep bukan fitur bawaan Git. Ini hanya konvensi. Anda bisa memberi nama apa saja, tetapi .gitkeep memberi tahu orang lain fungsinya.
Pemecahan Masalah Penghapusan File Git
Berikut beberapa masalah umum yang saya alami saat menghapus file di Git dan cara memperbaikinya.
File masih muncul di repositori remote
Anda menghapus file, melakukan commit, tetapi file itu masih ada di repo remote. Mungkin Anda lupa melakukan push.
Ini mengembalikan semua file ke keadaan yang terakhir di-commit.
Pemikiran Akhir
Saat Anda menghapus file di Git, mudah melakukan kesalahan jika tidak berhati-hati. Satu kesalahan kecil bisa menimbulkan masalah lebih besar: kode rusak, pekerjaan hilang, atau kebingungan di tim Anda. Karena itu, luangkan waktu sejenak untuk memeriksa ulang apa yang Anda lakukan.
Gunakan perintah yang tepat untuk situasinya. Jika Anda tidak yakin apa yang akan dilakukan sesuatu, uji dulu dengan dry run. Dan jika Anda bekerja dengan orang lain, pastikan semua orang berada pada pemahaman yang sama.
Lakukan selangkah demi selangkah. Begitulah cara Anda menjadi mahir.
Git Remove File FAQs
Apa arti “staging the removal”?⌄
Staging berarti menyiapkan perubahan untuk commit Anda berikutnya. Saat Anda menjalankan git rm filename, Git menghapus file dari folder Anda dan menyiapkan penghapusan itu untuk disimpan di commit berikutnya. Ini disebut staging penghapusan. Perubahan tidak bersifat permanen sampai Anda menjalankan git commit.
Apa perbedaan antara git rm dan rm?⌄
rm menghapus file hanya dari folder lokal Anda. Git tidak akan melacak perubahan ini sampai Anda menentukannya.
git rm menghapus file dan menandai penghapusan untuk commit berikutnya, sehingga Git menghapusnya dari repo juga.
Kapan saya harus menggunakan git push origin vs git push?⌄
Berikut kapan harus menggunakan masing-masing:
Gunakan git push jika branch Anda sudah terhubung ke remote.
Gunakan git push origin ketika Anda ingin jelas ke remote mana akan melakukan push, seperti saat mendorong branch baru atau memiliki lebih dari satu remote.
Apa yang dilakukan git pull?⌄
git pull memperbarui branch lokal Anda dengan perubahan terbaru dari remote. Ini mengambil commit baru dari remote lalu menggabungkannya ke branch saat ini.
Saya seorang ahli strategi konten yang senang menyederhanakan topik kompleks. Saya telah membantu perusahaan seperti Splunk, Hackernoon, dan Tiiny Host membuat konten yang menarik dan informatif untuk audiens mereka.
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.
Pelajari pengendalian versi dengan Git, mulai dari dasar hingga alur kerja tingkat lanjut. Lacak perubahan, kelola repositori, dan kolaborasi secara efisien.
Menghapus file di Git tidak selalu sesederhana kelihatannya. Anda menghapus file dari sistem, tetapi itu tidak berarti file tersebut hilang dari repositori. File itu mungkin masih ada di riwayat Anda, atau lebih buruk lagi, ikut ter-commit tanpa sengaja, seperti file konfigurasi atau kunci API.
Dalam panduan ini, Anda akan mempelajari cara menghapus file dari Git. Kita akan mulai dengan perintah dasar seperti
git rm, lalu masuk ke metode yang lebih lanjut seperti membersihkan file yang tidak dilacak dan mengedit riwayat commit Anda.Prasyarat
Sebelum kita menghapus file dengan Git, mari pastikan semuanya sudah siap.
Pertama, periksa apakah Git sudah terpasang. Buka terminal Anda dan jalankan:
Jika Anda melihat nomor versi, berarti Anda siap lanjut.
Jika Anda melihat nomor versi, berarti Anda siap lanjut.
Anda juga bisa memasang GUI Git seperti GitHub Desktop, Sourcetree, atau GitKraken jika Anda lebih suka antarmuka visual. Namun dalam panduan ini, saya akan menggunakan baris perintah (Git Bash).
Pastikan Anda memiliki izin untuk melakukan perubahan di repositori, terutama jika Anda bagian dari tim atau bekerja dengan repo remote seperti GitHub atau GitLab.
Catatan: Beberapa aksi penghapusan file tidak bisa dibatalkan. Jadi, sebaiknya buat cadangan proyek Anda atau setidaknya periksa ulang keadaan repo Anda sebelum menjalankan perintah yang menghapus file.
Jika sudah, mari mulai.
Penghapusan File Dasar di Git
Ada beberapa cara untuk menghapus file di Git, bergantung pada apa yang ingin Anda lakukan. Mari lihat beberapa opsi umum:
Menggunakan git rm
Perintah
git rmmenghapus file dari repositori Git Anda. Saat Anda menjalankannya, dua hal terjadi:Namun Git tidak hanya menghapus file. Git melacak penghapusan itu di riwayat Anda. Setelah Anda commit, file tersebut resmi dihapus dari proyek.
Anda bisa menghapus satu file, banyak file, atau sekelompok file menggunakan wildcard.
Misalnya, untuk menghapus semua file log:
Ini memberi tahu Git untuk menghapus setiap file di folder yang diakhiri dengan
.log. Anda bisa mengonfirmasi perubahannya dengan:Hapus banyak file dengan satu perintah git rm. Gambar oleh Penulis.
Ingin menghapus semua file di dalam folder tetapi tidak foldernya? Gunakan:
Ini menghapus setiap file di dalam folder temp tanpa menghapus foldernya.
Git juga menambahkan beberapa pemeriksaan keamanan. Jika sebuah file memiliki perubahan yang belum di-commit, Git tidak akan menghapusnya kecuali Anda memaksa. Jadi gunakan ini hanya jika Anda yakin perubahan tersebut bisa dibuang:
Untuk menghapus satu folder penuh beserta isinya, tambahkan flag
-r:Ini menghapus
testfolderdan semua file di dalamnya.Sekarang, untuk melakukan commit atas perubahan tersebut, jalankan perintah berikut:
Opsi utama git rm
Berikut opsi paling umum yang akan Anda gunakan dengan
git rm:1. <filename>
Ini adalah penggunaan dasar. Cantumkan saja file yang ingin Anda hapus:
Anda juga bisa menggunakan wildcard untuk menghapus banyak file dengan tipe yang sama. Misalnya, untuk menghapus semua file
.txt:(Di sini,
*berarti semua. Ini mencocokkan nama file apa pun yang berakhiran.txt.)2. --cached
Ini menghapus file dari repositori tetapi menyimpannya di komputer Anda. Misalkan saya tidak sengaja menambahkan file sensitif seperti config.env. Saya tidak menginginkannya di repo, tetapi saya masih membutuhkannya di mesin saya. Jadi saya akan menjalankan:
Di sini,
git rmakan menghapusnya dari repositori dan working directory. Dan--cachedmenghentikan pelacakannya oleh Git (jadi tidak akan didorong/pushed), tetapi membiarkannya tetap ada secara fisik.Untuk mencegahnya ditambahkan lagi, tambahkan ke
.gitignore:3. -r
Ini singkatan dari recursive. Alih-alih satu file, ini menghapus direktori dan isinya secara rekursif. Tanpa ini, Git akan memberi Anda error jika Anda mencoba menghapus folder.
Di sini, saya membuat folder bernama
testfolderdan dua file di dalamnya:a.txtdanb.txt.Selanjutnya, saya menjalankan perintah berikut:Ini menghapus folder beserta semua konten dan file di dalamnya
4.
--dry-runJika Anda tidak yakin apa yang akan terjadi jika Anda menghapus sebuah file, gunakan
git rmdengan opsi--dry-runseperti ini:Ini adalah cara aman untuk meninjau apa yang akan dihapus.
Atau jika Anda membersihkan file yang tidak dilacak dan ingin memeriksa dua kali apa yang akan dihapus, gunakan:
Ini hanya akan menampilkan apa yang akan dihapus oleh perintah tersebut.
Analisis Alur Kerja Perbandingan
Ada lebih dari satu cara untuk menghapus file di Git. Metodenya mungkin terlihat sama, tetapi perilakunya tidak sama.
git rm vs penghapusan manual
Ambil sebuah file bernama
file.txt. Misalkan saya tidak membutuhkannya lagi.Salah satu cara menghapusnya adalah dengan menghapus langsung dari sistem.
Di Linux, macOS, atau Git Bash:
Di Windows (command prompt):
Ini menghapus file dari folder Anda. Tetapi Git belum mengetahuinya. Jadi Anda harus memberi tahu Git secara manual bahwa file tersebut telah dihapus:
Ini menandai penghapusan agar disertakan dalam commit berikutnya.
Jika Anda menghapus beberapa file dan tidak ingat semuanya, Anda bisa menjalankan:
Ini menandai semua file yang dilacak yang diubah atau dihapus. Ini tidak akan menyertakan file yang tidak dilacak.
Sekarang lakukan commit terhadap perubahan tersebut:
Jika Anda menggunakan
git rm, ini menangani semuanya dalam satu langkah. Ini menghapus file dan langsung menandai perubahannya:Tidak perlu menjalankan
git addsecara terpisah. Ini lebih bersih dan Anda tidak akan lupa menandai penghapusannya.Singkatnya:
git rmlebih bersih dan lebih aman saat Anda sengaja menghapus file yang dilacak.Mengembalikan file yang terhapus di Git
Bagaimana jika Anda menghapus file dan kemudian menyadari Anda masih membutuhkannya? Tidak masalah. Git memberi Anda beberapa cara untuk mengembalikannya bergantung pada kapan Anda menyadari kesalahan tersebut.
Jika Anda belum melakukan commit:
Misalkan Anda menghapus file tetapi belum melakukan commit atas perubahan tersebut. Anda bisa memulihkannya dari commit terakhir seperti ini:
Ini mengembalikan file ke working directory Anda dari commit terbaru.
Jika Anda sudah melakukan commit atas penghapusan:
Itu juga tidak masalah. Pertama, cari commit terakhir saat file tersebut masih ada:
Lihat log dan salin hash commit saat file tersebut masih ada. Lalu jalankan:
Pada versi Git yang lebih lama, Anda bisa menggunakan perintah di atas. Perintah ini memulihkan file dari commit tertentu, tetapi juga bisa memindahkan branch.
Mulai Git 2.23, ini dipecah menjadi dua perintah yang lebih jelas:
git switch(untuk berpindah branch)git restore(untuk memulihkan file)Jika Anda hanya ingin memulihkan file dari sebuah commit, gunakan:
Ini mengambil file dari commit tersebut dan mengembalikannya ke working directory Anda.
Jika Anda tidak yakin kapan file itu dihapus:
Mungkin Anda telah membuat banyak perubahan dan tidak ingat kapan file itu hilang. Dalam kasus itu, gunakan git reflog atau reference log:
Ini menampilkan riwayat lengkap commit, checkout, reset, dan semuanya di Git Anda.
Namun
git refloghanya lokal dan tidak akan berfungsi di remote. Jika Anda bekerja dengan repo remote, lebih baik gunakangit log -- file.txtuntuk melacak riwayat file tersebut.Setelah Anda menemukan titik di mana file itu masih ada, pulihkan menggunakan
git checkoutataugit restoreseperti sebelumnya.Memperbaiki File yang Hilang di Git
Terkadang file terhapus langsung dari sistem—mungkin lewat file explorer, perintah rm di terminal, atau bahkan tidak sengaja. Ketika ini terjadi, Git tidak otomatis merapikan. Sebagai gantinya, Git menandai file-file itu sebagai hilang dan menunggu Anda menangani penghapusan dengan benar.
Mari lihat cara menanganinya langkah demi langkah.
Langkah 1: Periksa file yang hilang
Jalankan ini di folder proyek Anda:
Jika Git mengatakan sebuah file dihapus, itu berarti file tersebut hilang dari sistem Anda, tetapi perubahannya belum ditandai.
Langkah 2: Tandai penghapusannya
Untuk memberi tahu Git agar menandai semua perubahan (termasuk file yang dihapus), jalankan:
Ini menandai semua perubahan file: baru, dimodifikasi, dan dihapus. Lalu commit pembaruannya:
Ini adalah cara paling aman untuk merapikan karena menangkap setiap perubahan sekaligus.
Langkah 3: Push ke remote
Jika Anda bekerja dengan repositori remote, dorong commit-nya:
Ganti
<branch-name>dengan branch yang Anda gunakan, sepertimainataudev.Langkah 4: Alternatif
Misalkan Anda telah menghapus banyak file secara manual, mungkin tidak sengaja, atau saat bersih-bersih. Git masih menganggap file-file itu ada sampai Anda memberi tahu sebaliknya.
Jika Anda tidak ingin menghapus satu per satu dengan
git rm, ada cara yang lebih cepat untuk merapikan.Jalankan perintah ini di terminal Anda:
Begini cara kerjanya:
git ls-files --deletedmenampilkan semua file yang dilacak Git tetapi kini hilang.xargs -0 git rmmeneruskan nama-nama file itu kegit rmdan menghapusnya dari indeks Git.Ini sangat membantu saat Anda bekerja pada proyek besar dan ingin merapikan dengan cepat.
Catatan: Saya mendapatkan pesan ini karena tidak ada file yang dilacak yang saat ini hilang dari disk Anda.
Penghapusan File Tingkat Lanjut di Git
Setelah membahas dasar-dasarnya, mari lihat situasi yang lebih lanjut di mana menghapus file dari Git tidak sesederhana menjalankan
git rm. Ini adalah kasus ketika data sensitif terlibat atau file yang tidak dilacak perlu dibersihkan dengan hati-hati.Hapus data sensitif dari Git
Terkadang file dengan data pribadi, seperti kunci API atau kata sandi, tidak sengaja ter-commit. Menghapusnya secara normal tidak akan membantu. Karena Git menyimpan riwayat lengkap, dan file itu masih ada pada commit sebelumnya.
Untuk menghapusnya sepenuhnya, Anda dapat menggunakan perintah
git filter-repo: git filter-repo (disarankan)Ini adalah alternatif yang lebih baru dan lebih baik daripada
filter-branch. Lebih cepat, lebih aman, dan lebih mudah digunakan.Pertama, pasang alatnya (Anda memerlukan Python dan pip):
Lalu jalankan:
Ini menghapus file
hide.txtdari setiap commit di riwayat repo Anda.Untuk memastikan, jalankan:
Jika file sudah hilang, tambahkan ke
.gitignoreagar tidak dilacak lagi:Jika Anda bekerja dalam tim, bersihkan riwayat yang ditulis ulang dan lakukan force-push perubahan:
Lalu beri tahu rekan tim Anda. Mereka perlu meng-kloning ulang atau mereset salinan lokal mereka untuk menghindari error.
Bersihkan file tidak terlacak dengan git clean
Mari uraikan:
git rm, lalu commit.Untuk menghapus file atau folder yang tidak dilacak, gunakan
git clean.Berikut opsi yang paling berguna:
Berikut artinya:
-nberarti pratinjau saja.-fberarti paksa hapus.-dmenyertakan folder dalam pembersihan.Catatan:
git cleantidak akan menyentuh file yang dilacak. Tetapi ini akan menghapus apa pun yang tidak dilacak, bahkan file yang sebenarnya ingin Anda simpan. Jadi, selalu gunakan-nterlebih dahulu untuk melihat apa yang akan dihapus.Penghapusan File di GitHub & Alat GUI
Sebagian besar yang kita bahas sejauh ini menggunakan baris perintah. Namun tidak semua orang bekerja seperti itu dan itu tidak masalah. Beberapa pengembang menggunakan alat visual saat bekerja langsung di GitHub.
Jadi mari lihat bagaimana menghapus file di antarmuka web GitHub dan alat GUI lainnya, serta bagaimana perbandingannya dengan baris perintah.
Hapus file di situs GitHub
Jika Anda bekerja di antarmuka peramban GitHub, Anda bisa menghapus file tanpa menggunakan terminal.
Begini cara kerjanya di antarmuka 2025:
GitHub kemudian akan menampilkan kotak pesan commit. Tambahkan pesan singkat seperti:
Anda juga bisa menulis deskripsi opsional.
Selanjutnya, pilih cara menyimpan perubahan:
mainKlik Commit changes, dan GitHub akan menghapus file serta menyimpan penghapusannya sebagai commit, sama seperti yang dilakukan
git rmdari baris perintah.Hapus file dengan alat GUI Git
Jika Anda menggunakan GUI Git seperti GitHub Desktop, Sourcetree, atau Tower, prosesnya juga sederhana:
Setiap alat tampilannya sedikit berbeda, tetapi alur kerjanya serupa: Anda melacak perubahan secara visual, dan melakukan commit saat siap.
Praktik terbaik per platform
Berikut gambaran singkat cara kerja penghapusan file di berbagai platform, dan kapan masing-masing paling berguna:
Praktik Terbaik untuk Penghapusan File di Git
Menghapus file di Git mungkin terlihat sederhana, tetapi satu langkah yang salah bisa merusak kode Anda. Berikut beberapa kiat praktis yang saya gunakan untuk memastikan penghapusan aman dan terkendali, terutama pada proyek bersama atau jangka panjang.
Selalu verifikasi sebelum menghapus
Sebelum menghapus file, luangkan waktu sejenak untuk memastikan fungsinya:
git statusuntuk melihat apakah file itu sudah ditandai atau dimodifikasi.git log -- <filename>untuk memeriksa riwayat commit-nya.Pemeriksaan cepat ini menyelamatkan saya dari berjam-jam kerja pemulihan nanti.
Gunakan commit atomik
Commit atomik berarti satu commit per perubahan logis.
Misalnya, jika saya menghapus file yang tidak digunakan, saya hanya melakukan commit penghapusan itu, terpisah dari penyuntingan kode.
Berikut mengapa ini sangat membantu:
git bisectbekerja lebih baik saat commit kecil dan terfokus.Bekerja sama dengan hati-hati saat menulis ulang riwayat
Menulis ulang riwayat dengan alat seperti
git filter-repomemengaruhi semua orang di tim Anda. Untuk menghindari kekacauan:git push --forcedengan hati-hati karena ini menulis ulang riwayat remote.Gunakan --dry-run sebelum menjalankan perintah destruktif
Sebelum menjalankan perintah yang menghapus file, selalu uji dulu:
Ini menampilkan apa yang akan dihapus tanpa menghapus apa pun. Berikut mengapa saya pikir Anda selalu harus melakukan ini:
Padukan git rm --cached dengan .gitignore
Jika Anda tidak sengaja meng-commit sesuatu yang seharusnya tidak ada di repo (seperti file konfigurasi atau log), perbaiki dalam dua langkah:
Ini memberi tahu Git untuk berhenti melacak file tetapi membiarkannya tetap ada di komputer Anda.
gitignore:Berikut mengapa ini membantu:
.env,.log, ataunode_modules) tetap di luar repo.Kasus Tepi Git: Staging & Folder Kosong
Terkadang penghapusan file tidak berjalan seperti yang diharapkan. Anda bisa saja menandai file yang salah atau menemui masalah dengan folder kosong.
Berikut cara saya menangani kasus tepi yang umum.
Batalkan staging file tanpa menghapus perubahan Anda
Misalkan saya menjalankan
git add .dan tanpa sengaja menandai sebuah file yang tidak saya maksud. Saya tidak ingin kehilangan perubahan—saya hanya ingin membatalkan staging-nya.Untuk memperbaikinya, saya jalankan:
Ini membatalkan staging file tetapi mempertahankan suntingannya.
Untuk memastikan, saya gunakan:
Sekarang file tersebut akan tampil sebagai "modified" alih-alih "staged."
Mempertahankan folder kosong di repo
Secara bawaan, Git mengabaikan folder kosong. Jika saya mencoba meng-commit folder tanpa file di dalamnya, Git akan melewatinya.
Namun terkadang saya ingin mempertahankan folder itu di repo untuk log atau unggahan di masa mendatang. Solusi biasanya adalah menambahkan file placeholder bernama
.gitkeep.Begini caranya:
Ini membuat folder menjadi "tidak kosong," sehingga Git melacaknya.
Catatan:
.gitkeepbukan fitur bawaan Git. Ini hanya konvensi. Anda bisa memberi nama apa saja, tetapi.gitkeepmemberi tahu orang lain fungsinya.Pemecahan Masalah Penghapusan File Git
Berikut beberapa masalah umum yang saya alami saat menghapus file di Git dan cara memperbaikinya.
File masih muncul di repositori remote
Anda menghapus file, melakukan commit, tetapi file itu masih ada di repo remote. Mungkin Anda lupa melakukan push.
Jadi pastikan untuk menjalankan:
Periksa juga:
Masalah dengan submodule
Submodule adalah repositori Git di dalam repositori Git lain. Perilakunya tidak seperti folder biasa.
Jika Anda menghapus file di dalam submodule:
Jika Anda menghapus submodule sepenuhnya:
.gitmodulesdan.git/configKeadaan HEAD terlepas (Detached HEAD)
Di Git,
HEADbiasanya menunjuk ke branch saat ini. Namun terkadangHEADmenunjuk ke commit tertentu, ini disebut detached HEAD.Ini terjadi jika Anda:
Periksa status Anda:
Jika Anda melihat:
Anda tidak berada di sebuah branch, dan perubahan baru apa pun bisa hilang saat Anda beralih.
Begini cara memperbaikinya:
Jika Anda telah membuat perubahan dan ingin menyimpannya, jalankan ini:
Ini menempatkan pekerjaan Anda di branch baru dan menyimpannya.
Jika Anda sudah melakukan commit perubahan dan ingin memindahkannya ke branch lain nanti, lakukan ini:
Jika Anda tidak membuat perubahan apa pun dan hanya ingin keluar dari detached HEAD, jalankan ini:
Selesai. HEAD Anda kini terpasang kembali, dan semuanya kembali normal.
Izin atau error keadaan
Terkadang Git tidak mau menghapus file—biasanya di Windows. Ini bisa terjadi jika:
Begini cara memperbaikinya:
Masalah merge atau rebase
Jika Anda melihat error seperti:
Kemungkinan Anda sedang dalam proses merge atau rebase.
Untuk menyelesaikan rebase setelah menyelesaikan konflik:
Untuk membatalkan rebase atau merge sepenuhnya:
Ini mengembalikan repo Anda ke kondisi sebelum merge dimulai.
Ingin membuang semua perubahan lokal dan mereset working directory Anda?
Coba ini:
Ini mengembalikan semua file ke keadaan yang terakhir di-commit.
Pemikiran Akhir
Saat Anda menghapus file di Git, mudah melakukan kesalahan jika tidak berhati-hati. Satu kesalahan kecil bisa menimbulkan masalah lebih besar: kode rusak, pekerjaan hilang, atau kebingungan di tim Anda. Karena itu, luangkan waktu sejenak untuk memeriksa ulang apa yang Anda lakukan.
Gunakan perintah yang tepat untuk situasinya. Jika Anda tidak yakin apa yang akan dilakukan sesuatu, uji dulu dengan dry run. Dan jika Anda bekerja dengan orang lain, pastikan semua orang berada pada pemahaman yang sama.
Masih banyak lagi yang bisa dilakukan Git selain menghapus file. Anda bisa menghapus branch, membatalkan kesalahan menggunakan reset dan revert, atau melihat tepatnya apa yang berubah dengan git diff. Semakin banyak Anda belajar, semakin lancar alur kerja Anda.
Lakukan selangkah demi selangkah. Begitulah cara Anda menjadi mahir.