git rebase fatal:需要一次修改

问题描述 投票:0回答:8

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

$ 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 github rebase
8个回答
160
投票

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

git rebase
.

例如:

git rebase origin/master

不是:

git rebase origin

注意,虽然

origin
在用作需要提交引用的参数时应该解析为 ref
origin/HEAD
,但似乎并不是每个存储库都获得这样的引用,所以它可能不会(在你的情况下不会) ) 工作。明确是值得的。


33
投票

检查您是否正确拼写了分支名称。我正在 rebase 一个故事分支(即

branch_name
)并忘记了故事部分。 (即
story/branch_name
)然后git向我吐出这个错误,这在这种情况下没有多大意义。


30
投票

我遇到了

fatal: Needed a single revision
并意识到我在尝试变基之前没有获取上游。我只需要先
git fetch upstream
.


11
投票

问题是您从...分支了一个分支,您正试图重新定位到该分支。你不能变基到一个不包含你当前分支最初创建的提交的分支。

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

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

如果我当前的分支源于该分支的祖先,我可以毫无问题地变基到远程分支(甚至可能没有签出)。


1
投票

当您的存储库没有为远程设置默认分支时会发生错误。您可以使用

git remote set-head
命令修改默认分支,从而能够使用远程名称而不是该远程中的指定分支。

要查询遥控器(在本例中为

origin
)的
HEAD
(通常为
master
),并将其设置为默认分支:

$ git remote set-head origin --auto

如果你想在本地使用不同的默认远程分支,你可以指定那个分支:

$ git remote set-head origin new-default

设置默认分支后,您可以在

git rebase <remote>
和任何其他命令中仅使用远程名称,而不是显式
<remote>/<branch>
.

在幕后,此命令更新

.git/refs/remotes/origin/HEAD
中的引用。

$ cat .git/refs/remotes/origin/HEAD 
ref: refs/remotes/origin/master

有关详细信息,请参阅 git-remote 手册页


0
投票

git submodule deinit --all -f
为我工作。


0
投票

$ git rebase upstream/master

致命:需要一次修改

无效的上游 usptream/master**

所以我尝试了$ git rebase remotes/upstream/master,它对我有用。


0
投票

对我来说,指定分支有帮助。

  1 [submodule "test/gtest"]
  2     path = test/gtest
  3     url = ssh://[email protected]/google/googletest.git
  4     branch = main
© www.soinside.com 2019 - 2024. All rights reserved.