"git rebase origin" vs."git rebase origin/master"
GitGit RebaseGit Problem Overview
I don't get the difference between git rebase origin
and git rebase origin/master
. In my case I cloned a git repository twice. In the first clone I have to use git rebase origin
and in the other clone I must use git rebase origin/master
.
An example: http://paste.dennis-boldt.de/2011/05/11/git-rebase
Git Solutions
Solution 1 - Git
git rebase origin
means "rebase from the tracking branch of origin
", while git rebase origin/master
means "rebase from the branch master
of origin
"
You must have a tracking branch in ~/Desktop/test
, which means that git rebase origin
knows which branch of origin
to rebase with. If no tracking branch exists (in the case of ~/Desktop/fallstudie
), git doesn't know which branch of origin
it must take, and fails.
To fix this, you can make the branch track origin/master
with:
git branch --set-upstream-to=origin/master
Or, if master
isn't the currently checked-out branch:
git branch --set-upstream-to=origin/master master
Solution 2 - Git
Here's a better option:
git remote set-head -a origin
From the documentation:
> With -a, the remote is queried to determine its HEAD, then $GIT_DIR/remotes/
This has actually been around quite a while (since v1.6.3); not sure how I missed it!
Solution 3 - Git
You can make a new file under [.git\refs\remotes\origin] with name "HEAD" and put content "ref: refs/remotes/origin/master" to it. This should solve your problem.
It seems that clone from an empty repos will lead to this. Maybe the empty repos do not have HEAD because no commit object exist.
You can use the > git log --remotes --branches --oneline --decorate
to see the difference between each repository, while the "problem" one do not have "origin/HEAD"
Edit: Give a way using command line
You can also use git command line to do this, they have the same result
> git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master