Geçmiş olmadan yeni şube nasıl zorlanır


97

İlgisiz iki şubeye sahip git repo'm var, ana ve yapılandırmalar. Yapılandırmalar oluşturdum, tüm dosyaları temizledim ve ardından yalnızca yapılandırma dosyalarına yerleştirdim. Şimdi bunu uzak depoda itmek istiyorum, ancak yeni olduğu için boş dal (tüm değişikliklerimin günlükleri ve orijinal şubenin eski revizyonları olmadan).

Tüm geçmişi nasıl temizleyip onu zorlayabilirim?



Yanıtlar:


159

Tüm dosyaları temizlemek geçmişten kurtulmaz. Önce geçmişi olmayan bir dal oluşturmanız ve yapılandırma dosyalarınızı eklemeniz gerekir. Bu günlerde geçmişi olmayan bir şube yapan git checkoutbir --orphanseçenek var. İşte --orphanseçenekle ilgili bilgiler :

--orphan <new_branch>

<start_point> 'den başlayan <new_branch> adında yeni bir yetim şube oluşturun ve ona geçin. Bu yeni branşta yapılan ilk taahhütte ana unsur olmayacak ve diğer tüm şubelerden ve taahhütlerden tamamen kopuk yeni bir tarihin kökü olacak.

Dizin ve çalışma ağacı, daha önce "git checkout <start_point>" çalıştırmışsınız gibi ayarlanır. Bu, kök yürütmeyi yapmak için kolayca "git commit -a" komutunu çalıştırarak <başlangıç_noktası> 'na benzer bir dizi yolu kaydeden yeni bir geçmiş başlatmanıza olanak tanır.

Bu, ağacı tam geçmişini göstermeden bir kaydetmeden yayınlamak istediğinizde yararlı olabilir. Bunu, mevcut ağacı "temiz" olan, ancak tam geçmişinde özel veya başka şekilde ipotekli kod parçaları içeren bir projenin açık kaynak dalını yayınlamak için yapmak isteyebilirsiniz.

<start_point> öğesinden tamamen farklı bir dizi yolu kaydeden bağlantısı kesilmiş bir geçmiş başlatmak istiyorsanız, "git rm -rf" komutunu çalıştırarak artık dalı oluşturduktan hemen sonra dizini ve çalışma ağacını temizlemelisiniz. " çalışma ağacının en üst seviyesinden. Daha sonra yeni dosyalarınızı hazırlamaya, çalışma ağacını yeniden doldurmaya, onları başka bir yerden kopyalayarak, bir tarball çıkararak vb.

İşte ödeme için belgelere bir bağlantı . Sen de koşabilirsin git help checkout.

Şubenizi geçmiş olmadan oluşturduktan sonra, onu sunucuya ittiğinizde, o da geçmişe sahip olmayacaktır. FWIW, git push"uzak şubeyi yerel şubemle aynı göster" şeklinde düşünmeme yardımcı oluyor . Yani bir tarihiniz varsa ve zorluyorsanız, onun da geçmişi olacaktır. Yapmazsanız, itilen dal olmayacaktır.


40

Tüm geçmişi nasıl temizleyip onu zorlayabilirim?

git checkout --orphan <name_you_choose_for_orphan_branch>
git commit

O zaman koşabilirsin

git push <remote-name> <branch-name>


cf. bu tek astarlı


17

Özel bilgileri paylaşmadan veya geçmişimi silmeden bir serbest meslek sahibine bazı kodlar göndermek için bunu yapmam gerekiyordu.

Herhangi birinizin SourceTree kullanması durumunda, bunu böyle başardım. Lütfen yanlış bir şey yaptıysam veya kaynak kontrol yönetimine çok aşina olmadığım için bir şeyi unutursam bana bildirin.

  1. Kaynak ağacındaki terminal düğmesine gittim.
  2. 'Git checkout --orphan clean-ver' komutunu kullanarak yeni bir 'öksüz' dal oluşturdum, burada clean-ver benim dalımdır
  3. Terminali kapattım ve yeni bir yetim şubede olduğum için commit logumun temizlendiğini gördüm. Tüm kaynak kodumu hazırladım ve değişiklikleri yaptım.
  4. Bitbucket havuzumu depodan> uzak veya depo ekle> depo ayarları> ekle içinde kuruyorum.
  5. Onu kapattım ve butona tıkladım
  6. Yeni 'clean-ver' şubemi seçtim tamam dedim.

Bitbucket'ı kontrol ettiğimde, bu işe yaramış gibi görünüyor ve işleme geçmişimi attı.

Umarım bu birine yardım eder.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.