Git tools and best practices
Welcome to my blog! The intention of this blog is to update it with topics, that I think are worthy of sharing and keeping you updated on some projects I work on.
A lot of people asked me to give them help with git and I thought it might be helpful to summarize the general response I give to them in a short blog post. I’m using git only Linux and Mac OS X only, so I can only really give advise for those operating systems.
So, what is git? Git is a distributed version control system, that was developed by Linus Torvald. Check out his talk about it here.
My projects branching models is mostly based on this great best practices guide from Vincent Driessen. I maintain a development branch for current development work and branch from it sometimes feature branches if the feature takes some more time. When I release I merge those changes back into master and tag the release.
A lot of people also ask the difference between rebase and merge. Fortunately this was answered already on stackoverflow.
Some people also ran in the problem of adding a tracking branch to a local branch. Just use git 1.7.0+ and type
git branch --set-upstream local_branch remote/remote_branch
The last question I often get is, which tools I use. I mostly use the command line, but found those tools for Mac OS X very helpful:
- GitX – this is a very lean git client, that installs a command line extension “gitx”. I use it to look at diffs, stage changes, and perform commits.
- GitX Experimental (thanks Marcello)- there is another branch from GitX that is much more advanced. It supports sidebar, fetch, pull, push, add remote, merge, cherry-pick, rebase, clone, clone to in the GUI. Note, that if you want to build it with Xcode, you have to clone it and not download a snapshot from github, because the build script will automatically checkout some sub-modules.
- Tower – this great client is still in beta and hence sometimes real buggy. It visualizes a large set of the git features and is very good for git beginners.
- Git gui – this TCL/TK gui comes with the git Mac OS X installer and can be invoked through the command line with “git gui”
For collaboration I use github, which is really fun for social coding.
I hope you enjoyed my short post and ping me with any questions you have.
