“git rebase origin”与“git rebase origin / master”

我没有得到git rebase origingit rebase origin/master的区别。 在我的情况下,我克隆了一个git仓库两次。 在第一个克隆中,我必须使用git rebase origin而在另一个克隆中,我必须使用git rebase origin/master

一个例子: http : //paste.dennis-boldt.de/2011/05/11/git-rebase

这是一个更好的select:

 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以来); 不知道我错过了!

git rebase origin意味着“源自追踪分支的origin ”,而git rebase origin/master意味着“来自origin分支masterorigin

您必须在~/Desktop/test拥有一个跟踪分支,这意味着git rebase origin知道哪个分支将与rebase绑定。 如果没有跟踪分支存在(在~/Desktop/fallstudie的情况下),git不知道它必须采用哪个分支,并失败。

为了解决这个问题,你可以使现有的master分支跟踪origin/master

 git branch --set-upstream master origin/master 

您可以在[.git \ refs \ remotes \ origin]下创build名为“HEAD”的新文件,并将内容“ref:refs / remotes / origin / master”添加到该文件中。 这应该可以解决你的问题。

看来,从一个空的回购克隆将导致这一点。 也许空的回购没有HEAD,因为没有提交对象存在。

你可以使用

git log –remotes –branches –oneline –decorate

看到每个存储库的区别,而“问题”一个不具有“起源/头”

编辑:使用命令行的方式
你也可以使用git命令行来做到这一点,他们有相同的结果

git symbolic-ref refs / remotes / origin / HEAD refs / remotes / origin / master