git rebase fatal: Потрібна одиночна версія


162

У мене є відділення загальнодоступного сховища, і я намагаюся оновити своє відділення поточними комісіями з оригінального сховища:

$ 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>

Це <remote>замість мого віддаленого імені, а насправді не моє віддалене ім’я. Документація щодо цієї помилки здається трохи розпущеною.


2
Я отримав цю помилку з незв'язаної причини - використовуючи "git rebase --interactive c4e9c94 ^" з командного рядка Windows. Це підказало мені "Більше?", І незалежно від того, як він відповів на підказку, він сказав "фатально: потрібна була одиночна ревізія". Але коли я запустив ту саму команду з bash, вона спрацювала чудово.
Річард Бейер

Як зауваження, для мене, окрім того, що гілка вище за течією була вказана з "віддаленою", мені довелося отримати конкретну гілку, яку я хотів відновити. "git fetch <upstream> master". Вибір просто <upstream> з "git fetch <upstream>" все одно призведе до цієї помилки.
Солодкість

Відповіді:


132

Потрібно вказати ім'я філії (або іншого ідентифікатора фіксації), а не ім'я віддаленого користувача git rebase.

Наприклад:

git rebase origin/master

не:

git rebase origin

Зауважте, хоча це originмає бути вирішеним для посилання, origin/HEADколи воно використовується як аргумент, коли потрібна посилання на фіксацію, здається, що не кожне сховище отримує таке посилання, тому воно може не працювати (і у вашому випадку не працює). Це повинно бути явним.


2
Останнє насправді має спрацювати - originу рефлекторному контексті трактується як origin/HEAD. Я бачив, як сховища закінчуються, не знаючи, що origin/HEADтаке ...
Cascabel

1
@Jefromi: Я боюся, що я вам не вірю, я просто спробував git rebase originтестовий сховище (де originє a HEAD), і я отримую помилку OP. У документації на ребазу не вказується, що віддалене ім'я дійсне для <upstream>.
CB Bailey

1
@Charles: Ну, це може бути помилка? git rev-parse originпрацює, як і git rebase originв моєму клоні git.git (в актуальному, швидкому перемозі та справжньому випадку перезавантаження, включаючи інтерактивний).
Каскабель

@Jefromi: Ви можете git describeсвоє HEAD?
CB Bailey

@Charles: оновлено, v1.7.4-rc3! Мені страшенно не хочеться робити біс, шукаючи цього ...
Cascabel

28

Перевірте, чи правильно ви написали назву гілки . Я випускав гілку історії (тобто branch_name) і забував частину історії. (тобто story/branch_name), а потім git плює на мене цю помилку, яка не мала особливого сенсу в цьому контексті.


Саме це. Введено, featureNameколи гілка фактично названаfeatures/featureName
pkamb

3
Також хороша ідея більш ретельно шукати прості помилки. Я випадково поміняв дві літери під час створення відділення, і цю друкарню було дуже важко помітити.
Ольга

25

Я зіткнувся з цим і зрозумів, що не взяв верхній потік перед тим, як спробувати відновити базу. Все, що мені потрібно булоgit fetch upstream


10

Проблема полягає в тому, що ви розгалужили гілку від ...., де ви намагаєтеся відновити базу даних. Ви не можете повторно базуватись на гілці, яка не містить комісію, на якій була створена ваша поточна гілка.

Це я отримав, коли спершу перекомпонував локальну гілку X на висунуту Y, потім спробував відновити гілку (спочатку створену на X) на висунуту Y.

Вирішено для мене, перейшовши на X.

У мене немає проблем із поверненням до віддалених гілок (можливо, навіть не перевірених) за умови, що моя поточна гілка походить від предка цієї гілки.


3
Ви можете перейти на таке відділення за допомогою --onto. Все відбувається від деякого загального предка (для нормальних сховищ), так що це не проблема. Я отримав цю помилку від спроби перезавантажити, fooколи я ще не створив гілку для відстеження origin/foo.
cdunn2001

0

Для віддалених origin:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.