Cara Menghapus Riwayat Commit dan Memulai Ulang Repository GitHub dari Awal
Ada kalanya sebuah project perlu dimulai kembali dari kondisi yang benar-benar bersih. Misalnya, karena struktur project berubah total, repository digunakan ulang untuk project baru, atau riwayat commit lama sudah tidak lagi relevan.
Dalam kondisi tersebut, Anda dapat menghapus seluruh riwayat commit Git, membuat repository baru secara lokal, lalu mengganti histori repository di GitHub. Panduan ini menjelaskan proses tersebut secara lengkap dan aman.
Penting
Tutorial ini bertujuan menghapus seluruh riwayat commit Git dan menggantinya dengan satu commit baru. Jika repository digunakan oleh banyak developer, lakukan langkah ini hanya setelah berkoordinasi dengan seluruh contributor karena histori repository akan berubah secara permanen.
Kapan metode ini digunakan?
Metode ini cocok digunakan apabila:
repository masih bersifat pribadi atau hanya digunakan oleh sedikit orang
Anda ingin memulai project dari awal tanpa membawa histori lama
repository digunakan kembali sebagai dasar project baru
struktur project telah berubah secara menyeluruh
Apabila tujuan Anda hanya menghapus beberapa commit atau menghapus file sensitif dari histori, sebaiknya gunakan metode seperti git rebase atau git filter-repo, bukan menghapus seluruh repository Git. GitHub juga menyarankan penggunaan git-filter-repo untuk menghapus data sensitif dari histori tanpa harus membuat repository baru.
Sebelum memulai
Pastikan Anda telah:
melakukan backup project jika diperlukan
menyimpan seluruh perubahan penting
memahami bahwa histori commit lama akan hilang
mengetahui apakah repository memiliki Branch Protection yang dapat mencegah force push
Langkah 1. Masuk ke folder project
Contoh:
cd path/to/project
Langkah 2. Hapus folder .git
Folder .git menyimpan seluruh metadata Git, termasuk:
commit history
branch
tag
remote repository
konfigurasi Git lokal
Menghapus folder ini akan mengubah project menjadi folder biasa tanpa riwayat Git.
Windows PowerShell
Remove-Item -Recurse -Force .git
Windows Command Prompt (CMD)
rmdir /S /Q .git
Git Bash, Linux, dan macOS
rm -rf .git
Menghapus
.gittidak akan menghapus source code. Yang dihapus hanyalah metadata Git. File seperti.gitignore,README.md, atau source code project tetap berada di dalam folder project.
Langkah 3. Inisialisasi repository baru
Buat repository Git baru.
git init
Jika ingin menggunakan branch utama bernama main:
git branch -M main
Langkah 4. Tambahkan seluruh file
git add .
Sebelum membuat commit, pastikan tidak ada file yang seharusnya tidak ikut dipublikasikan.
Periksa terlebih dahulu:
git status
Langkah 5. Buat commit pertama
git commit -m "Initial commit"Repository kini hanya memiliki satu commit.
Verifikasi:
git log --oneline
Output seharusnya hanya menampilkan satu commit.
Langkah 6. Hubungkan kembali ke GitHub
Karena folder .git telah dibuat ulang, seluruh konfigurasi remote sebelumnya sudah hilang.
Tambahkan kembali remote repository:
git remote add origin https://github.com/USERNAME/REPOSITORY.git
Verifikasi:
git remote -v
Langkah 7. Push ke GitHub
Jika repository GitHub masih kosong
Cukup jalankan:
git push -u origin main
Jika repository GitHub sudah memiliki histori commit
Push biasa biasanya akan ditolak karena histori lokal dan remote tidak memiliki hubungan.
Dalam kondisi tersebut, gunakan force push:
git push --force origin main
Atau, jika bekerja dalam tim dan ingin menggunakan opsi yang lebih aman:
git push --force-with-lease origin main
Perintah tersebut akan mengganti histori repository di GitHub dengan histori baru dari repository lokal. Git secara default menolak perubahan histori yang bukan merupakan fast-forward, sehingga force push memang diperlukan ketika mengganti seluruh riwayat commit.
Cara memastikan histori benar-benar bersih
Periksa histori commit:
git log --oneline
Periksa remote:
git remote -v
Buka halaman repository di GitHub dan pastikan hanya terdapat satu commit, yaitu commit awal yang baru Anda buat.
Hal yang perlu diperhatikan
Menghapus histori commit memiliki beberapa konsekuensi:
seluruh SHA commit akan berubah
seluruh branch lama menjadi tidak relevan
pull request lama dapat kehilangan referensi
collaborator harus melakukan clone ulang atau menyinkronkan repository mereka karena histori telah berubah
GitHub juga mengingatkan bahwa penulisan ulang histori pada repository yang sudah dibagikan dapat memengaruhi seluruh clone dan fork yang sudah ada.
Kapan sebaiknya tidak menggunakan metode ini?
Hindari metode ini apabila:
repository digunakan banyak developer
histori commit masih memiliki nilai dokumentasi
Anda hanya ingin menghapus beberapa commit
Anda hanya ingin menghapus file tertentu dari histori
Dalam kasus tersebut, solusi seperti git revert, git rebase -i, atau git filter-repo umumnya lebih tepat.
Kesimpulan
Menghapus folder .git kemudian melakukan git init merupakan cara paling sederhana untuk memulai repository Git dari awal. Namun, langkah ini hanya membersihkan histori lokal. Jika repository di GitHub sudah memiliki commit, Anda tetap harus melakukan force push agar histori lama di remote digantikan dengan histori baru.
Karena force push menulis ulang histori repository, gunakan metode ini hanya ketika Anda benar-benar memahami dampaknya dan yakin bahwa seluruh histori lama memang sudah tidak diperlukan.
Cara Menghapus Seluruh Riwayat Commit Git dan Memulai Repository dari Awal
Ada kalanya sebuah project perlu dimulai kembali dari kondisi yang benar-benar bersih. Misalnya, karena struktur project berubah total, repository digunakan ulang untuk project baru, atau riwayat commit lama sudah tidak lagi relevan.
Dalam kondisi tersebut, Anda dapat menghapus seluruh riwayat commit Git, membuat repository baru secara lokal, lalu mengganti histori repository di GitHub. Panduan ini menjelaskan proses tersebut secara lengkap dan aman.
Penting
Tutorial ini bertujuan menghapus seluruh riwayat commit Git dan menggantinya dengan satu commit baru. Jika repository digunakan oleh banyak developer, lakukan langkah ini hanya setelah berkoordinasi dengan seluruh contributor karena histori repository akan berubah secara permanen.
Kapan metode ini digunakan?
Metode ini cocok digunakan apabila:
repository masih bersifat pribadi atau hanya digunakan oleh sedikit orang
Anda ingin memulai project dari awal tanpa membawa histori lama
repository digunakan kembali sebagai dasar project baru
struktur project telah berubah secara menyeluruh
Apabila tujuan Anda hanya menghapus beberapa commit atau menghapus file sensitif dari histori, sebaiknya gunakan metode seperti git rebase atau git filter-repo, bukan menghapus seluruh repository Git. GitHub juga menyarankan penggunaan git-filter-repo untuk menghapus data sensitif dari histori tanpa harus membuat repository baru.
Sebelum memulai
Pastikan Anda telah:
melakukan backup project jika diperlukan
menyimpan seluruh perubahan penting
memahami bahwa histori commit lama akan hilang
mengetahui apakah repository memiliki Branch Protection yang dapat mencegah force push
Langkah 1. Masuk ke folder project
Contoh:
cd path/to/project
Langkah 2. Hapus folder .git
Folder .git menyimpan seluruh metadata Git, termasuk:
commit history
branch
tag
remote repository
konfigurasi Git lokal
Menghapus folder ini akan mengubah project menjadi folder biasa tanpa riwayat Git.
Windows PowerShell
Remove-Item -Recurse -Force .git
Windows Command Prompt (CMD)
rmdir /S /Q .git
Git Bash, Linux, dan macOS
rm -rf .git
Menghapus
.gittidak akan menghapus source code. Yang dihapus hanyalah metadata Git. File seperti.gitignore,README.md, atau source code project tetap berada di dalam folder project.
Langkah 3. Inisialisasi repository baru
Buat repository Git baru.
git init
Jika ingin menggunakan branch utama bernama main:
git branch -M main
Langkah 4. Tambahkan seluruh file
git add .
Sebelum membuat commit, pastikan tidak ada file yang seharusnya tidak ikut dipublikasikan.
Periksa terlebih dahulu:
git status
Langkah 5. Buat commit pertama
git commit -m "Initial commit"Repository kini hanya memiliki satu commit.
Verifikasi:
git log --oneline
Output seharusnya hanya menampilkan satu commit.
Langkah 6. Hubungkan kembali ke GitHub
Karena folder .git telah dibuat ulang, seluruh konfigurasi remote sebelumnya sudah hilang.
Tambahkan kembali remote repository:
git remote add origin https://github.com/USERNAME/REPOSITORY.git
Verifikasi:
git remote -v
Langkah 7. Push ke GitHub
Jika repository GitHub masih kosong
Cukup jalankan:
git push -u origin main
Jika repository GitHub sudah memiliki histori commit
Push biasa biasanya akan ditolak karena histori lokal dan remote tidak memiliki hubungan.
Dalam kondisi tersebut, gunakan force push:
git push --force origin main
Atau, jika bekerja dalam tim dan ingin menggunakan opsi yang lebih aman:
git push --force-with-lease origin main
Perintah tersebut akan mengganti histori repository di GitHub dengan histori baru dari repository lokal. Git secara default menolak perubahan histori yang bukan merupakan fast-forward, sehingga force push memang diperlukan ketika mengganti seluruh riwayat commit.
Cara memastikan histori benar-benar bersih
Periksa histori commit:
git log --oneline
Periksa remote:
git remote -v
Buka halaman repository di GitHub dan pastikan hanya terdapat satu commit, yaitu commit awal yang baru Anda buat.
Hal yang perlu diperhatikan
Menghapus histori commit memiliki beberapa konsekuensi:
seluruh SHA commit akan berubah
seluruh branch lama menjadi tidak relevan
pull request lama dapat kehilangan referensi
collaborator harus melakukan clone ulang atau menyinkronkan repository mereka karena histori telah berubah
GitHub juga mengingatkan bahwa penulisan ulang histori pada repository yang sudah dibagikan dapat memengaruhi seluruh clone dan fork yang sudah ada.
Kapan sebaiknya tidak menggunakan metode ini?
Hindari metode ini apabila:
repository digunakan banyak developer
histori commit masih memiliki nilai dokumentasi
Anda hanya ingin menghapus beberapa commit
Anda hanya ingin menghapus file tertentu dari histori
Dalam kasus tersebut, solusi seperti git revert, git rebase -i, atau git filter-repo umumnya lebih tepat.
Kesimpulan
Menghapus folder .git kemudian melakukan git init merupakan cara paling sederhana untuk memulai repository Git dari awal. Namun, langkah ini hanya membersihkan histori lokal. Jika repository di GitHub sudah memiliki commit, Anda tetap harus melakukan force push agar histori lama di remote digantikan dengan histori baru.
Karena force push menulis ulang histori repository, gunakan metode ini hanya ketika Anda benar-benar memahami dampaknya dan yakin bahwa seluruh histori lama memang sudah tidak diperlukan.