git rebase致命:需要单一版本

jrl*_*mx2 156 git github rebase

我有一个公共存储库的分支,我正在尝试使用原始存储库中的当前提交更新我的分支:

$ 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>
Run Code Online (Sandbox Code Playgroud)

<remote>取代了我的远程名称,实际上并不是我的远程名称.关于这个错误的文档似乎有点松散.

CB *_*ley 125

您需要提供分支(或其他提交标识符)的名称,而不是远程名称git rebase.

例如:

git rebase origin/master
Run Code Online (Sandbox Code Playgroud)

不:

git rebase origin
Run Code Online (Sandbox Code Playgroud)

注意,虽然在用作需要提交引用的参数origin时应解析为ref origin/HEAD,但似乎并非每个存储库都获得这样的引用,因此它可能不会(并且在您的情况下不会)工作.要明确是值得的.

  • 后者实际上应该起作用-ref上下文中的“ origin”被解释为“ origin / HEAD”。我看到存储库最终不知道`origin / HEAD`是什么,但是... (2认同)
  • @Jefromi:恐怕我不相信你,我刚刚在测试存储库上尝试了“git rebase origin”(其中“origin”有一个“HEAD”),并且我收到了OP的错误。rebase 的文档并没有说远程名称对于“&lt;upstream&gt;”有效。 (2认同)
  • @Charles:嗯,这可能是一个错误?`git rev-parse origin` 可以工作,就像我的 git.git 克隆中的 `git rebase origin` 一样(在最新的、快进的和真正的 rebase 情况下,包括交互式)。 (2认同)

Chr*_*sJF 26

检查您是否正确拼写了分支名称.我正在改变一个故事分支(即branch_name)并忘记故事部分.(即story/branch_name)然后git向我吐出这个错误,在这个背景下没有多大意义.

  • 也是一个更好的想法,更彻底地寻找简单的拼写错误.我在创建分支时偶然交换了两个字母,这个拼写错误很难被发现. (3认同)

Mar*_*res 22

我遇到了这个,并意识到我在尝试重新绑定之前没有获取上游.我所需要的只是git fetch upstream


Mai*_*eya 10

问题是你分支了一个分支....你试图改变的地方.您不能重新绑定到不包含最初创建当前分支的提交的分支.

当我第一次将一个本地分支X重新绑定到一个Y时,我得到了这个,然后尝试将一个分支(首先在X上创建)重新绑定到推送的Y.

通过重新定位为X解决了我.

如果我当前的分支源自该分支的祖先,我没有问题变基于远程分支(可能甚至没有检出).

  • 你可以用`--onto`来重新定义这样一个分支.一切都来自*一些*共同的祖先(对于普通的存储库),所以这不是问题.当我还没有创建分支来跟踪`origin/foo`时,我从尝试重新绑定到`foo`时得到了这个错误. (3认同)