我有一个公共存储库的分支,我正在尝试使用原始存储库中的当前提交更新我的分支:
$ 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
,但似乎并不是每个存储库都获得这样的引用,所以它可能不会(在你的情况下不会) ) 工作。明确是值得的。
检查您是否正确拼写了分支名称。我正在 rebase 一个故事分支(即
branch_name
)并忘记了故事部分。 (即story/branch_name
)然后git向我吐出这个错误,这在这种情况下没有多大意义。
我遇到了
fatal: Needed a single revision
并意识到我在尝试变基之前没有获取上游。我只需要先git fetch upstream
.
问题是您从...分支了一个分支,您正试图重新定位到该分支。你不能变基到一个不包含你当前分支最初创建的提交的分支。
当我第一次将本地分支 X 重新设置为推送的 Y,然后尝试将分支(首先在 X 上创建)重新设置为推送的 Y 时,我得到了这个。
通过重新定位到 X 为我解决了
如果我当前的分支源于该分支的祖先,我可以毫无问题地变基到远程分支(甚至可能没有签出)。
当您的存储库没有为远程设置默认分支时会发生错误。您可以使用
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 手册页。
git submodule deinit --all -f
为我工作。
$ git rebase upstream/master
致命:需要一次修改
无效的上游 usptream/master**
所以我尝试了$ git rebase remotes/upstream/master,它对我有用。
对我来说,指定分支有帮助。
1 [submodule "test/gtest"]
2 path = test/gtest
3 url = ssh://[email protected]/google/googletest.git
4 branch = main