I just recently switched to Git after joining a new company. The team I'm on was just in the process of switching from SVN to Git, so we were all spending a lot of time online in Pro Git as well as researching various workflows.<p>I think that we're still not fully taking advantage of Git because the other members of the team tend to commit and push all the time (so the code is backed up) but that makes rebasing and squashing quite difficult.<p>Git has also allowed us to work better with maintaining feature branches and bug fix branches which helps us to give individual branches to QA for test and only release those features/fixes that have been QA approved. If a feature isn't ready on time for deployment, it just doesn't get added to the integration branch and it'll go out the next release. That's pretty cool.<p>Personally, I've settled on using SourceTree as a GUI with a fallback to the command-line for certain operations.
Is there a big performance boost for squashing when rebasing? Is it just housekeeping?<p>I like what Paul Stadig had to say on the topic <a href="http://paul.stadig.name/2010/12/thou-shalt-not-lie-git-rebase-ammend.html" rel="nofollow">http://paul.stadig.name/2010/12/thou-shalt-not-lie-git-rebas...</a>
i think this is the place to remind of torvalds git talk <a href="http://www.youtube.com/watch?v=4XpnKHJAok8" rel="nofollow">http://www.youtube.com/watch?v=4XpnKHJAok8</a>
<i>Historically with SVN, branching was skittish.</i><p>Really? How? I've always found Subversion branching to be painless, reliable, fast enough, and merges often go flawlessly, and it's really not been that hard to resolve merge conflicts.