我没有区分git rebase origin
和git rebase origin/master
。在我的情况下,我克隆了两次git存储库。在第一个克隆中,我必须使用git rebase origin
,而在另一个克隆中,我必须使用git rebase origin/master
。
答案 0 :(得分:64)
git rebase origin
表示"来自origin
"的跟踪分支,而git rebase origin/master
表示"来自master
的分支origin
~/Desktop/test
"
您必须在git rebase origin
中设置跟踪分支,这意味着origin
知道~/Desktop/fallstudie
的哪个分支要重新定位。如果不存在跟踪分支(在origin
的情况下),git不知道它必须采用origin/master
的哪个分支,并且失败。
要解决此问题,您可以使用:
创建分支跟踪git branch --set-upstream-to=origin/master
master
或者,如果git branch --set-upstream-to=origin/master master
不是当前签出的分支:
{{1}}
答案 1 :(得分:20)
这是一个更好的选择:
git remote set-head -a origin
来自文档:
使用-a,查询远程以确定其HEAD,然后将$ GIT_DIR / remotes // HEAD设置为同一分支。例如,如果远程HEAD指向下一个,则“git remote set-head origin -a”将$ GIT_DIR / refs / remotes / origin / HEAD设置为refs / remotes / origin / next。只有当refs / remotes / origin / next已经存在时,这才有效;如果没有,必须先取出。
这实际上已经存在了很长时间(自v1.6.3起);不确定我是怎么错过的!
答案 2 :(得分:2)
您可以在[.git \ refs \ _dototes \ origin]下创建一个名为“HEAD”的新文件,并将内容“ref:refs / remotes / origin / master”放入其中。这应该可以解决你的问题。
似乎从空的回购中克隆会导致这种情况。也许空存储库没有HEAD,因为不存在提交对象。
您可以使用
git log --remotes --branches --oneline --decorate
看到每个存储库之间的区别,而“问题”一个没有“origin / HEAD”
编辑:使用命令行给出一种方法
您也可以使用git命令行来执行此操作,它们具有相同的结果
git symbolic-ref refs / remotes / origin / HEAD refs / remotes / origin / master