Hello,
I recently started to use git and now are digging through more and more
of the low level details.
What I recently tried was to do this for a repository created by Bob:
git remote add -t for_bob anna url
So setup a remote (created by anna) for which a branch called
for_bob is fetched.
Then git fetch anna.
Then
git checkout -b from_anna anna/for_bob
So create a from_anna branch in Bobs repository which tracks the for_bob
branch in the remote anna repository.
Now git pull works as expected for the from_anna branch.
But git push does not, because from_anna has a different branch name
than the branch you want to push to (you want to push to the for_bob
branch).
So after googling I found out about the push.default=upstream config
option, which seems to do exactly what I want: It uses the tracking
information to decide to which remote branch I want to push.
Now for cross checking I looked up the documentation of push.default at
http://git-scm.com . It says:
- snip --
push.default ...
upstream - push the current branch back to the branch whose changes are
usually integrated into the current branch (which is called @{upstream}).
This mode only makes sense if you are pushing to the same repository you
would normally pull from (i.e. central workflow).
- snip -
I think the second sentence here is quite confusing.
To me it seems push.default=upstream is actually the best choice for a
*de-centralized* workflow.
Rationale:
Assume I pull the master branch from several remote repositories
(de-centralized workflow I guess).
To handle that I setup several remote tracking branches called:
repo1_master (tracks repo1/master)
repo2_master (tracks repo2/master)
reap3_master (tracks repo3/master)
Now without push.default=upstream I would have to either always explicitly
do something like:
git push repo1 repo1_master:master
git push repo2 repo2_master:master
Or modify .git/config to add that per default via push= entries.
Whereas with push.default=upstream everything works as expected it seems.
So if I am not wrong here, I would propose to rephrase the sentence
-- snip -
This mode only makes sense if you are pushing to the same repository you
would normally pull from (i.e. central workflow).
-- snip -
To do that: Could someone point out, when it does NOT make sense to use
push.default=upstream ?
with best regards
Ingo
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html