git rebase fatal: Tek bir düzeltme gerekiyor


162

Halka açık bir depo şubem var ve şubemi orijinal depodaki mevcut taahhütlerle güncellemeye çalışıyorum:

$ git fetch <remote>
remote: Counting objects: 24, done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 20 (delta 12), reused 0 (delta 0)
Unpacking objects: 100% (20/20), done.
From git://github.com/path_to/repo
  9b70165..22127d0  master     -> $/master
$ git rebase <remote>
fatal: Needed a single revision
invalid upstream <remote>

Bu <remote>benim uzak adımın yerine ve aslında benim uzak adım değil. Bu hatayla ilgili belgeler biraz gevşek görünüyor.


2
Bu hatayı ilgisiz bir nedenle aldım - Windows komut isteminden "git rebase --interactive c4e9c94 ^" kullanarak. Bana "Daha fazla mı?" Ama aynı komutu bash'tan çalıştırdığımda işe yaradı.
Richard Beier

Bir yan not olarak, benim için "uzak" listelenen yukarı akış şubeye ek olarak ben üzerinde yeniden kurmak istediğim belirli şube getirmek zorunda kaldı. msgstr "git getir <upstream> master". "Git fetch <upstream>" ile sadece <upstream> getiriliyorsa yine de bana bu hata verilir.
Tatlılık

Yanıtlar:


132

Uzaktan kumandanın adını değil, bir dalın adını (veya başka bir taahhüt tanımlayıcısını) sağlamanız gerekir git rebase.

Örneğin:

git rebase origin/master

değil:

git rebase origin

Her ne kadar bir taahhüt başvurusunun gerekli olduğu bir argüman olarak kullanıldığında originref'ye çözüm bulması origin/HEADgerekse de, her havuzun böyle bir referans elde edemeyeceği, böylece çalışmayabileceği (ve sizin durumunuzda çalışmadığı) gözükmektedir. Açık olmak öder.


2
İkincisi aslında çalışmalıdır - originref bağlamında olarak yorumlanır origin/HEAD. Depoların ne origin/HEADolduğunu bilmediğini gördüm , ancak ...
Cascabel

1
@Jefromi: Sana inanmıyorum diye korkuyorum, sadece git rebase originbir test deposunu denedim (nerede originvar HEAD) ve OP'nin hatasını alıyorum. Rebase dokümantasyonu için uzak bir adın geçerli olduğunu söylemiyor <upstream>.
CB Bailey

1
@Charles: Peki, bu bir hata olabilir mi? git.git klonumda git rev-parse originolduğu gibi çalışır git rebase origin(güncel, hızlı ileri ve gerçek rebase durumunda, etkileşimli dahil).
Cascabel

@Jefromi: Can sen git describesenin HEAD?
CB Bailey

@Charles: güncel, v1.7.4-rc3! Bunu arayan bir bisect yapmaya çok hevesli değilim ...
Cascabel

28

Bunu kontrol doğru şube adını yazıldığından . Bir öykü dalını (yani branch_name) yeniden temel alıyordum ve hikaye bölümünü unuttum. (yani story/branch_name) ve sonra git bana bu bağlamda pek bir anlam ifade etmedi.


Kesinlikle bu. Yazılan featureNameşube aslında adlandırılır zamanfeatures/featureName
pkamb

3
Ayrıca basit yazım hataları daha ayrıntılı bir şekilde aramak için iyi bir fikir. Şube oluştururken yanlışlıkla iki harfi değiştirdim ve bu yazım hatasını görmek gerçekten zordu.
Olga

25

Buna rastladım ve yeniden pazarlamaya başlamadan önce akış yukarı getirmediğimi fark ettim. Tek ihtiyacım olangit fetch upstream


10

Sorun şu ki, bir şube kapalı dallanmış .... nerede rebase için çalışıyoruz. Mevcut dalınızın orijinal olarak oluşturulduğu taahhüdü içermeyen bir şubeye yeniden adlandıramazsınız.

Yerel bir dal X'i itilen bir Y'ye ilk kez bastığımda bunu aldım, sonra da itilen bir Y'ye bir dal (ilk olarak X üzerinde oluşturuldu) yeniden oluşturmaya çalıştım.

Benim için X'e dayanarak çözüldü.

Mevcut şubemin bu dalın bir atasından kaynaklanması şartıyla uzak şubelere (potansiyel olarak teslim alınmamış bile olsa) yeniden basmakta sorun yaşamıyorum.


3
İle böyle bir şubeye geri dönebilirsiniz --onto. Her şey bazı ortak atalardan (normal depolar için) geliyor, bu yüzden sorun değil. Bu hatayı foohenüz izlemek için şube oluşturmamışken yeniden işlemeye çalışmaktan aldım origin/foo.
cdunn2001

0

Uzaktan kumanda için origin:

$ echo "ref: refs/remotes/origin/master" > .git/refs/remotes/origin/HEAD

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.