Rumah > Artikel > alat pembangunan > Bantu anda memadamkan rekod sejarah dalam Git
Bagi pembangun yang menggunakan Git untuk pengurusan projek, mereka sering menghadapi situasi di mana mereka perlu memadamkan rekod sejarah. Contohnya, jika maklumat sensitif diserahkan atau undang-undang memerlukan pengalihan keluar kandungan tertentu. Walau bagaimanapun, Git direka untuk menyimpan rekod semua pengubahsuaian, jadi memadamkan sejarah bukanlah tugas yang mudah. Artikel ini akan memperkenalkan beberapa kaedah untuk membantu anda memadam rekod sejarah dalam Git.
Anda boleh menggunakan git reset
dan git push
dalam arahan Git untuk memadam rekod sejarah. Mula-mula gunakan perintah git log
untuk melihat sejarah.
$ git log --oneline
Ini menyenaraikan semua rekod komit pada cawangan semasa, setiap satu dengan pengecam SHA-1 (lajur pertama) dan mesej (lajur berikut).
Kemudian, gunakan perintah git reset
untuk menetapkan semula cawangan semasa kepada sejurus sebelum komit yang anda mahu padamkan. Sebagai contoh, jika anda ingin memadamkan tiga rekod komit terakhir, anda boleh menggunakan:
$ git reset HEAD~3
Ini akan menetapkan semula cawangan semasa kepada tiga rekod komit pertama dan tiga komit terakhir dalam sejarah akan telah dipadamkan.
Akhir sekali, gunakan perintah git push -f
untuk menolak paksa ke gudang jauh dan menulis ganti sejarah. Ini boleh menyebabkan masalah untuk orang lain menarik kemas kini, jadi anda perlu memastikan semua orang yang mempunyai kebenaran mengetahui tentang perkara ini.
$ git push -f
Apabila menggunakan kaedah ini untuk memadamkan sejarah, kami mengesyorkan anda membuat sandaran pangkalan kod sebelum melaksanakan, untuk berjaga-jaga.
Satu lagi alat berkuasa ialah BFG Repo-Cleaner. Ia adalah program Java yang boleh dijalankan secara tempatan untuk memadam sejarah dalam repositori Git.
Pertama, pasang BFG Repo-Cleaner. Anda boleh menggunakan Homebrew untuk memasang pada Mac:
$ brew install bfg
atau muat turun dan pasang dari tapak web rasmi ke komputer anda:
$ wget http://search.maven.org/remotecontent?filepath=com/madgag/bfg/1.14.0/bfg-1.14.0.jar
Kemudian, jalankan arahan berikut dalam direktori akar daripada repositori Git (sila Pastikan anda menyandarkan pangkalan kod anda sebelum memadam):
$ java -jar /path/to/bfg.jar --delete-files filename.txt.git $ git reflog expire --expire=now --all && git gc --prune=now --aggressive $ git push
di mana filename.txt.git
ialah nama fail yang mengandungi kandungan yang akan dipadamkan (cth. .git-credentials
). Di sini BFG Repo-Cleaner digunakan untuk mengalih keluar sejarah komit, rujukan dan teg, dan kemudian memampatkan semula repositori.
Perlu diambil perhatian bahawa BFG Repo-Cleaner boleh memadamkan sebarang kandungan dalam repositori, jadi ia perlu dikendalikan dengan berhati-hati.
Kaedah terakhir ialah mencipta repositori Git baharu yang mengandungi hanya komit yang anda mahu simpan. Pendekatan ini memerlukan beberapa kerja manual tetapi mengekalkan integriti repositori dan tidak menjejaskan kerja orang lain pada repositori.
Pertama, buat direktori baharu dalam direktori akar repositori Git asal untuk menyimpan repositori Git baharu:
$ mkdir newrepo && cd newrepo
Kemudian, salin rekod komit terpilih repositori Git asal Ke direktori baharu:
$ git clone /path/to/oldrepo --depth 1 $ cd oldrepo && git log --oneline
Ini akan menyalin rekod komit terakhir repositori Git asal ke repositori Git baharu. Kemas kini URL jauh repositori baharu dan tolaknya ke repositori jauh.
$ git remote set-url origin git://new/repo.git $ git push -u origin master
Ini mencipta repositori Git baharu yang mengandungi hanya rekod komited terpilih.
Ringkasan
Dalam Git, memadamkan rekod sejarah adalah isu sensitif dan perlu ditangani dengan berhati-hati. Gunakan perintah git reset
untuk memadamkan komitmen terbaru. Gunakan BFG Repo-Cleaner untuk memadamkan sejarah komit fail atau folder tertentu. Akhir sekali, anda boleh mengekalkan rekod komit secara pilihan dengan mencipta repositori Git baharu. Walau apa pun, anda perlu menyandarkan pangkalan kod anda sebelum memadamkannya, untuk berjaga-jaga.
Atas ialah kandungan terperinci Bantu anda memadamkan rekod sejarah dalam Git. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!