パブリックリポジトリのブランチがあり、元のリポジトリからの現在のコミットでブランチを更新しようとしています。
$ 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>
はリモート名の代わりにあり、実際にはリモート名ではありません。このエラーに関するドキュメントは少し緩いようです。
git rebase
へのリモートの名前ではなく、ブランチの名前(または他のコミット識別子)を提供する必要があります。
例えば。:
git rebase Origin/master
ではない:
git rebase Origin
注:Origin
は、コミット参照が必要な引数として使用する場合、ref Origin/HEAD
に解決する必要がありますが、すべてのリポジトリがそのような参照を取得するとは限らないため、動作しない場合があります(そして、あなたの場合は動作しません)。明示的であることは有益です。
ブランチ名を正しくつづったであることを確認してください。ストーリーブランチ(branch_name
)のベースを変更し、ストーリー部分を忘れていました。 (つまり、story/branch_name
)、gitはこのエラーを吐き出しましたが、このコンテキストではあまり意味がありませんでした。
私はこれに遭遇し、リベースする前にアップストリームをフェッチしなかったことに気付きました。必要なのは、git fetch upstream
だけでした
問題は、リベースしようとしている場所からブランチを分岐したことです。現在のブランチが最初に作成されたコミットを含まないブランチにリベースすることはできません。
最初にローカルブランチXをプッシュされたYにリベースし、次にブランチ(Xで最初に作成された)をプッシュされたYにリベースしようとしたときにこれを取得しました。
Xにリベースすることで解決しました。
現在のブランチがそのブランチの祖先に由来する場合、リモートブランチにリベースすることは問題ありません(チェックアウトされていない可能性もあります)。
リモートOrigin
の場合:
$ echo "ref: refs/remotes/Origin/master" > .git/refs/remotes/Origin/HEAD