Rebase'i tamamen iptal et


256

Ben böyle bir rebase gerçekleştirdi:

git rebase --onto master new_background_processing export_background_processing

Bu istediğim şeyi yapmadı, bu yüzden bir sıfırlama gerçekleştirdim:

git reset --hard HEAD@{1}

Şubemi olduğu duruma geri getirdim, ancak git status yazdığımda bu iletiyi aldım:

# You are currently rebasing branch 'export_background_processing' on 'e378641'.

Bu geri ödemeyi nasıl tamamen iptal edebilirim? Bunun ne anlama geldiğinden emin değilim.


16
git rebase --abort
Micha Wiedenmann

6
Git 2.12 şimdi sağlar git rebase --quit. Aşağıdaki cevabımı
VonC

Yanıtlar:


409

Kullanın git rebase --abort. Gönderen için resmi Linux çekirdeği belgelerindegit rebase :

git rebase --continue | --skip | --abort | --edit-todo

5
Benim durumumda git rebase --abortişe yaramadı, çünkü bir şey berbat ettim. Sadece şu hata var: error: could not read '.git/rebase-apply/head-name': directory of file does not exist. git rebase --quit Açıklanan feryat sorunumu çözdü.
Kout

84

Düzgün bir şekilde iptal etmediğiniz geçmiş bir geri ödeme durumunda, şimdi (Git 2.12, Q1 2017) git rebase --quit

Bakınız Nguyễn Thái Ngọc Duy ( ) tarafından 9512177 (12 Kasım 2016) taahhüdü . (Göre Birleştirilmiş - Junio Cı Hamano - içinde 06cd5a1 tamamlama 2016, 19 Ara)pcloudsgitster

rebase: --quittemizlik tabanına ekleyin , diğer her şeye dokunmayın

Devam eden bir geri ödemeyi iptal etmeye ve başka bir şey yapmaya devam etmeye karar verdiğiniz durumlar vardır, ancak önce " git rebase --abort" yapmayı unutursunuz . Ya da rebaz çok uzun süredir devam ediyor. Bunu fark edene kadar (örneğin başka bir rebase başlatarak) adımlarınızı izlemek için çok geç. Çözüm normalde

rm -r .git/<some rebase dir>

ve hayatınıza devam edin.
Ancak iki farklı dizin olabilir <some rebase dir>(ve tabii ki rebase'in nasıl çalıştığına dair biraz bilgi gerektirir) ve " .git" bölümü üst düzey veya bağlantılı bir çalışma ağacında değilseniz çok daha uzun olabilir. Ve " rm -r" yapmak çok tehlikelidir .git, buradaki bir hata nesne veritabanını veya diğer önemli verileri yok edebilir.

git rebase --quitBu kullanım örneği için " " olan bir emsali taklit ederek " " sağlayın git cherry-pick --quit.


Git 2.27'den (Q2 2020) önce git merge --autostash, ilk kirli durumu korumak için " " tarafından oluşturulan saklanmış girdi git rebase --quit, düzeltilen " " üzerine yanlışlıkla atıldı .

Bkz . Denton Liu ( ) tarafından taahhüt edilen 9b2df3e (28 Nis 2020 ) . (Göre Birleştirilmiş - Junio Cı Hamano - içinde 3afdeef tamamlama 2020 Nisan 29)Denton-L
gitster

rebase: İçine autostash girişi kaydetmek stash reflogüzerinde--quit

İmzalayan: Denton Liu

In a03b55530a ( " merge: öğretmek --autostash seçeneği", 2020/04/07, Git v2.27.0 - birleştirme listelenen toplu 5. ), --autostashopsiyon için tanıtıldı git merge.

( "Bkz Can‘ git pullotomatik beklemedeki değişiklikleri saklamak ve pop’? ")

Özellikle, git merge --quitbir otoztaz girişi varken çalıştırıldığında, stash refloguna kaydedilir.

Bu, git rebase --quitotoztaz girişinin sadece varoluştan çıkarıldığı mevcut davranışla zıttır.

Davranışını benimseyin git merge --quitiçinde git rebase --quitve bunun yerine sadece silme zulası reflog içine autostash giriş yap.


3
Bu, git rebasebenim yaptığım gibi kaybetmek yerine, a'nın üstünde değişiklikler yapıldığında çalışma dizinini sıfırlamanın yan etkisinden kaçınmak için çok yararlıdır : P.
Warlike Şempanze

12

Rebase'i tamamlamadığınız için şanslısınız, böylece yine de yapabilirsiniz git rebase --abort. Rebase'i tamamlamış olsaydınız ( tarihi yeniden yazar ), işler çok daha karmaşık olurdu. Potansiyel olarak zarar verici işlemler (özellikle tarih yeniden yazma) yapmadan önce dalların ipuçlarını etiketlemeyi düşünün, böylece bir şey patlarsa geri sarabilirsiniz.


8

Eğer varsa "rebasing" , "Zaten başlatılmış rebase" istediğiniz iptal , sadece yorum (#)Rebase editörü listelenen tüm kaydedilmesini.

Sonuç olarak bir komut satırı mesajı alırsınız

Nothing to do
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.