Tuesday, November 5, 2013

Git branch naming

Subject: Git branch naming

  • note: originally emailed 10/30/2013 and sanitized for public consumption
  • sidenote: posting here so i can lead people here whenever they ask me about this stuff...

Sent by XXX:
> One thing I was thinking about since we are going to start using
> branches a lot more is that we start labeling branches versus tags. Say
> something like….'feature-branch' or 'feature-B' and
> 'ZZZ-1.1-T' or ZZZ-1.9-release'. This way it is easier to see
> which branches are tags and which branches are tags for release.

Don’t confuse a branch with a tag.

A tag is a ref like any other:
git checkout -b branchname tag

Which is a shortcut for
git branch branchname tag
git checkout branchname

“You cannot checkout a tag.”


[ Git ]

Subject: [ Git ]

  • note: originally emailed 11/05/2013 and sanitized for public consumption
  • sidenote: posting here so i can lead people here whenever they ask me about this stuff...

Git is an extremely flexible and powerful revision control system.  PerForce was my #1 fav until Git showed up.

Anyways, we had a new contractor start up here with us -- but has no CVS access.  So I've setup a dual RCS configuration where I would manually merge between our team's updates to CVS with the contractor's GIT repository.

Quite possibility the easiest I have ever encountered.  I would love to see the whole organization move to GIT.

That said, I have collected a number of links to get our contractor up to speed with GIT.

*** must reads ***
  • branching workflow (very relevant to this current thread -- and please see the attached note: it was in my drafts folder -- it didn't seem appropriate to send it at the time, whereas now, it is obvious)

  • a very good 'overview' of a lot of the common ways RCS can be used
  • an example of why there's no 'central repository' in the GIT universe (so the excuse of "we don't have access to GIT to upload our changes -- we're stuck in the water!!!" isn't really true)

The following are a little more terse and detailed, I highly recommend spending a few moments whenever you can:

My most favorite feature of GIT is the "stash" command
  • you can "stash" you current work (i.e. a temp checkin to your local GIT depo)
  • which will _then_ revert your changes to your latest checkout (previous to your "changes")
  • do your work
  • checkin (commit)
  • and then "unstash" your work-in-progress, continuing as if nothing changed

There is no limit to the number of stashes you can do...

Btw, the VIM fugitive plugin is amazing.