On Thu, Apr 5, 2012 at 22:56, Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> wrote: > On Thu, Apr 5, 2012 at 22:48, Hilco Wijbenga <hilco.wijbenga@xxxxxxxxx> wrote: >> Should we simply do "git merge master" instead of "git rebase master"? >> And then do something at the end when we are about to merge the shared >> branch back into master to guarantee linear history? Your thoughts and >> ideas would be greatly appreciated. > > Yes, that's the most sensible workflow to have. You create a topic > branch, push/pull it back and forth, do merge commits and never rebase > it, then when you decide if it's finished you can either merge it into > the mainline (with non-linear history), or have someone rebase it and > push it to the mainline. > > I use the latter workflow extensively in my work e.g. when peer > programming. We'll both have the same branch set up as a tracking > branch, make a bunch of WIP commits with crappy commit messages for a > day or so, then at the end of the day interactively rebase the branch, > and push it with linear history to the mainline. To elaborate, this is how to do the workflow I'm talking about, with a git set to push.default=tracking. The person setting up the topic branch does this, "origin" is our shared upstream server. This creates a new topic and pushes it: git checkout -b team-whatever/some-topic git push origin -u team-whatever/some-topic Everyone else does this: git fetch origin git checkout -t team-whatever/some-topic Then everyone hacks, and does a "git pull --no-rebase && git push" to push work. When you're pair programming and switching between computers this'll often be: git commit -a -m"wip" git push Followed by, on the other box: git pull --no-rebase Then when the topic is ready and you want to push it to the mainline someone does: git fetch origin git rebase -i origin/master and rewords/squashes/fixes up the various commits, followed by: # Now fixed up, push to the mainline git push origin team-whatever/some-topic:master # Nuke the now-redundant topic branch git push origin --delete team-whatever/some-topic -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html