Re: Linear history *and* share a branch?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

[Newbies FAQ]     [Linux Kernel Development]     [Free Online Dating]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Free Online Dating]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]     [Linux Resources]

Add to Google