|
|
|
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 http://vger.kernel.org/majordomo-info.html
[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]