i have tried making changes, pushed github. computer, fetched changes. when git status
, reports this:
on branch mytestbranch nothing commit, working directory clean
this strange because i'm there changes fetched. did merge changes fetched!
in fact when went on friend's computer , did git status
, see this:
your branch behind 'origin/mytestbranch' 1 commit, , can fast-forwarded.
but why weren't git reporting origin/mytestbranch
how many commits ahead or whether branch up-to-date origin/mytestbranch
?
my guess @ point (i'm still waiting git branch -vv
or git rev-parse --symbolic-full-name "@{u}"
results) not have origin/mytestbranch
set upstream mytestbranch
.
to set branch upstream current branch, use:
git branch --set-upstream-to upstream
1
which in case expands to:
git branch --set-upstream-to origin/mytestbranch
to remove upstream setting, use git branch --unset-upstream
.
the presence or absence of upstream setting affects whether git status
can tell if ahead and/or behind, , whether git merge
, git rebase
can job no additional parameters. it's convenience setting.
normally upstream set automatically when first check out branch having git checkout
create based on remote-tracking branch. instance, on first git clone
, git runs, @ end, equivalent of:
git checkout master
even though have no master
yet. git discovers have origin/master
(and no other remote/master
there no question which remote use), , equivalent of:
git checkout -b --track master origin/master
which creates local master
pointing same commit remote-tracking branch origin/master
, , setting origin/master
upstream master
, in 1 big do-what-i-mean fell swoop.
when create new local branch , have not yet pushed upstream, there no origin/whatever
remote-tracking branch local branch track.2 in case, have set upstream manually, or use git push -u ...
: -u
tells git push
run git branch --set-upstream-to
(although it's built in c code, @ point).
1if you're stuck ancient git (pre-1.8.0) must use git branch --set-upstream
, tricky right, or git config
, tricky right. if @ possible, upgrade modern git version.
2the set of words here—nouns branch, nouns adjectives local branch , remote-tracking branch, , verbs set-upstream-to , gerunds tracking—is rather unfortunate. git terminology, put in nice short memorable anglo-saxon way instead of polysyllabic neologistic phraseology, sucks rocks.3
3or other anglo-saxon kick-ass word of choice.