web-dev-qa-db-ja.com

git rebase fatal:単一のリビジョンが必要

パブリックリポジトリのブランチがあり、元のリポジトリからの現在のコミットでブランチを更新しようとしています。

$ 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>はリモート名の代わりにあり、実際にはリモート名ではありません。このエラーに関するドキュメントは少し緩いようです。

142
jrlmx2

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

例えば。:

git rebase Origin/master

ではない:

git rebase Origin

注:Originは、コミット参照が必要な引数として使用する場合、ref Origin/HEADに解決する必要がありますが、すべてのリポジトリがそのような参照を取得するとは限らないため、動作しない場合があります(そして、あなたの場合は動作しません)。明示的であることは有益です。

116
CB Bailey

ブランチ名を正しくつづったであることを確認してください。ストーリーブランチ(branch_name)のベースを変更し、ストーリー部分を忘れていました。 (つまり、story/branch_name)、gitはこのエラーを吐き出しましたが、このコンテキストではあまり意味がありませんでした。

26
ChrisJF

私はこれに遭遇し、リベースする前にアップストリームをフェッチしなかったことに気付きました。必要なのは、git fetch upstreamだけでした

20

問題は、リベースしようとしている場所からブランチを分岐したことです。現在のブランチが最初に作成されたコミットを含まないブランチにリベースすることはできません。

最初にローカルブランチXをプッシュされたYにリベースし、次にブランチ(Xで最初に作成された)をプッシュされたYにリベースしようとしたときにこれを取得しました。

Xにリベースすることで解決しました。

現在のブランチがそのブランチの祖先に由来する場合、リモートブランチにリベースすることは問題ありません(チェックアウトされていない可能性もあります)。

10
Maitreya

リモートOriginの場合:

$ echo "ref: refs/remotes/Origin/master" > .git/refs/remotes/Origin/HEAD
0
Jani