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
無関係な理由でこのエラーが発生しました-Windowsコマンドプロンプトから「git rebase --interactive c4e9c94 ^」を使用します。それは私に「もっと?」を促し、プロンプトにどのように答えたかに関係なく、「致命的:単一のリビジョンが必要でした」と言いました。しかし、私がbashから同じコマンドを実行したとき、それはうまくいきました。
Richard Beier 2012

余談ですが、私にとっては、「リモート」とリストされたアップストリームブランチに加えて、リベースしたい特定のブランチをフェッチする必要がありました。「git fetch <upstream> master」。"git fetch <upstream>"で<upstream>だけをフェッチしても、このエラーが発生します。
甘さ

回答:


132

へのリモートの名前ではなく、ブランチの名前(または他のコミット識別子)を提供する必要がありますgit rebase

例えば:

git rebase origin/master

ない:

git rebase origin

注、けれどもoriginrefに解決する必要がありますorigin/HEAD参照が必要になることはないかもしれません(そして、あなたのケースではありません)の仕事をして、それはそのような参照ことなく、すべてのリポジトリ利益を思わコミット引数として使用する場合。それは明白であることに値します。


2
後者は実際に機能するはずoriginです。refコンテキストでは次のように解釈されorigin/HEADます。origin/HEADしかし、リポジトリが何であるかを知らないままになるのを見てきました...
Cascabel

1
@Jefromi:私恐れては、私はあなたを信じていないことを、私は試してみたgit rebase origin(テストリポジトリにoriginありHEAD)、私はOPのエラーが発生します。rebaseのドキュメントには、リモート名がに対して有効であるとは記載されていません<upstream>
CBベイリー

1
@チャールズ:まあ、それはバグかもしれない?私のgit.gitクローンgit rev-parse originと同様に機能git rebase originします(最新、早送り、インタラクティブを含む真のリベースの場合)。
Cascabel 2011年

@Jefromi:あなたはできgit describeますHEADか?
CBベイリー

@Charles:最新、v1.7.4-rc3!私はこれを探すために二等分をすることをひどく熱望していません...
Cascabel

28

ブランチ名のスペルが正しいことを確認してください。私はストーリーブランチ(つまりbranch_name)をリベースしていて、ストーリーパートを忘れていました。(つまりstory/branch_name)そしてgitは私にこのエラーを吐きましたが、このコンテキストではあまり意味がありませんでした。


まさにこれ。型指定されたfeatureName分岐が実際に命名されたときfeatures/featureName
pkamb

3
また、単純なタイプミスをより徹底的に探すこともお勧めします。ブランチを作成するときに誤って2つの文字を入れ替えてしまったため、このタイプミスを見つけるのは本当に困難でした。
Olga


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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.