我不明白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
发布于 2011-05-11 21:02:42
git rebase origin的意思是“从origin的跟踪分支重新建立基础”,而git rebase origin/master的意思是“从origin的分支master重新建立基础”。
您必须在~/Desktop/test中有一个跟踪分支,这意味着git rebase origin知道使用origin的哪个分支进行rebase。如果不存在跟踪分支(在~/Desktop/fallstudie的情况下),git不知道它必须采用origin的哪个分支,因此失败。
要解决此问题,您可以使用以下命令使分支跟踪origin/master:
git branch --set-upstream-to=origin/master 或者,如果master不是当前签出的分支:
git branch --set-upstream-to=origin/master master发布于 2011-05-13 08:09:23
这里有一个更好的选择:
git remote set-head -a origin从文档中:
如果使用-a,则查询远程数据库以确定其头部,然后将$GIT_DIR/remotes//头部设置为同一分支。例如,如果远程头部指向next,"git remote set-head origin -a“会将$GIT_DIR/refs/remotes/origin/HEAD设置为refs/remotes/origin/next。这只在refs/remotes/origin/next已经存在的情况下才有效;如果不存在,则必须先获取它。
这实际上已经存在很长一段时间了(从v1.6.3开始);不知道我是怎么错过它的!
发布于 2011-05-11 23:12:29
您可以在.git\refs\remotes\origin下创建一个名为"HEAD“的新文件,并将内容"ref: ref: refs/remotes/origin/master”放入其中。这应该可以解决您的问题。
看起来从一个空的repos克隆会导致这个结果。可能空的repos没有头,因为不存在提交对象。
您可以使用
远程分支--oneline -装饰
查看每个存储库之间的差异,而“问题”存储库没有“源/头”。
编辑:使用命令行提供一种方法
您也可以使用git命令行来执行此操作,它们具有相同的结果
git symbolic ref ref/remotes/origin/HEAD refs/remotes/origin/master
https://stackoverflow.com/questions/5963597
复制相似问题