我不明白 和 之间的git rebase origin
区别git rebase origin/master
。就我而言,我克隆了一个 git 存储库两次。在第一个克隆中我必须使用git rebase origin
,而在另一个克隆中我必须使用git rebase origin/master
.
一个例子: http: //paste.dennis-boldt.de/2011/05/11/git-rebase
我不明白 和 之间的git rebase origin
区别git rebase origin/master
。就我而言,我克隆了一个 git 存储库两次。在第一个克隆中我必须使用git rebase origin
,而在另一个克隆中我必须使用git rebase origin/master
.
一个例子: http: //paste.dennis-boldt.de/2011/05/11/git-rebase
git rebase origin
表示“从”的跟踪分支变基origin
,而git rebase origin/master
表示“从”的分支变master
基origin
您必须在 中有一个跟踪分支~/Desktop/test
,这意味着它git rebase origin
知道要使用哪个分支origin
进行变基。如果不存在跟踪分支(在 的情况下~/Desktop/fallstudie
),git 不知道origin
它必须采用哪个分支,并且失败。
要解决此问题,您可以使用以下命令创建分支轨道origin/master
:
git branch --set-upstream-to=origin/master
或者,如果master
不是当前签出的分支:
git branch --set-upstream-to=origin/master master
这是一个更好的选择:
git remote set-head -a origin
从文档中:
使用 -a,查询远程以确定其 HEAD,然后将 $GIT_DIR/remotes//HEAD 设置为相同的分支。例如,如果远程 HEAD 指向 next,“git remote set-head origin -a”会将 $GIT_DIR/refs/remotes/origin/HEAD 设置为 refs/remotes/origin/next。这只有在 refs/remotes/origin/next 已经存在时才有效;如果不是,则必须先获取它。
这实际上已经存在了一段时间(从 v1.6.3 开始);不知道我是怎么错过的!
您可以在 [.git\refs\remotes\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