Rumah > Soal Jawab > teks badan
滿天的星座2017-04-28 09:08:29
Soalan ini agak A/B, kerana anda tidak menerangkan senario pemadaman rekod komit lama dahulu, yang sangat penting kerana ia akan menjejaskan pilihan penggunaan Git yang seterusnya. Contohnya:
git rebase -i <ref>
git rebase --onto <ONTO_BASE_ref> <START_ref> <END_ref>
, dengan START
Bahagian antara END
ialah bahagian yang perlu dikekalkan, dan ONTO_BASE
ialah titik asas terkini, dengan kata lain, rekod sejarah antara ONTO_BASE
dan START
akan dipadamkan. git checkout --orphan new_start
, arahan ini akan mencipta cawangan yang dipanggil new_start
Cawangan ini tidak mempunyai sebarang sejarah, tetapi semua fail akan wujud secara utuh dan anda boleh mula menyerahkan semula dengan sewajarnya. Selepas selesai, anda juga boleh membuang cawangan lama secara langsung. Selain itu, anda juga boleh menentukan titik permulaan cawangan baharu. Lalai sudah tentu bermula dari HEAD
. git replace
: http://git -scm.com/2010/03/17/replace.html
Sebenarnya, terdapat banyak senario yang boleh dikatakan Penggunaan Git sangat fleksibel Walaupun anda tidak menggunakannya buat sementara waktu, ia patut dibaca dengan teliti untuk mengetahui jenis perkara yang boleh dilakukannya maka anda boleh menyimpulkannya sendiri apabila menghadapi pelbagai senario yang kompleks. Terdapat penyelesaiannya.
Sebagai penyelenggara Repo, perkara yang paling biasa ialah menyimpannya daripada rujukan tertentu kepada HEAD, dan kemudian memadamkan sejarah sebelumnya. Oleh kerana tugasan ini agak biasa, berikut ialah skrip shell untuk dikongsi dengan anda:
sh
#!/bin/bash git checkout --orphan temp git commit -m "截取的历史记录起点" git rebase --onto temp master git branch -D temp
digunakan seperti ini (contohnya, skrip disimpan sebagai git-detach
): git-detach <ref>
, dengan <ref>
ialah titik permulaan rekod sejarah yang anda ingin simpan.
Perlu diambil perhatian bahawa skrip ini hanya "memisahkan" rekod sejarah, dan kemudian beberapa daripadanya tidak mempunyai rujukan yang boleh dilihat dan tidak kelihatan dalam rekod sejarah Walau bagaimanapun, objek git mereka masih wujud (. Dalam erti kata lain, anda masih boleh memulihkan dan menyemak git-reflog
sendiri Jika anda benar-benar mahu membuang sepenuhnya sejarah ini (untuk menurunkan berat badan untuk repo), anda boleh menggunakan git gc --prune
, dan anda tidak akan mendapat. ia kembali.
P.S. Skrip ini bergantung pada Cawangan Orphan, yang tidak disokong oleh versi Git yang lebih rendah (mungkin < v1.7.x jika anda mempunyai alternatif, sila Google sendiri).