Setting up git

February, 2010

Git is one of a new breed of distributed version control systems (others include bazaar and Mercurial). If you're used to centralised systems, such as svn and cvs, then they're easy to grasp - imagine that instead of commiting changes to one master server, everyone has their own server that they commit to. These local servers then send and receive patchsets through another git server, which everyone synchronises with.

Actually getting setup with git is really straightforward - install the git package from your distribution.

Whilst git has it's own protocol, it's much better to leave that to a better tool (the UNIX philosophy at work), so we can tell git to use ssh for communication.

The simplest setup scenario is to have a machine running git that you nominate as the server. It's this machine that holds the latest version of code and where all the clients will send their patches.

Set it up like so:

ssh yourserver
mkdir /git/location/app.git
cd /git/location/app.git
git --bare init

That's it - you now have an empty git repository, ready for patches to be pushed to.

On your client machine, go to your working directory, add the branch and push it up to the server (the last line allows you to issue git push and git pull without having to specify origin master every time).

cd ~/workspace/app
git init
git remote add origin ssh://yourserver/git/location/app.git
git add -A
git commit -m "Initial commit"
git push origin master
git config branch.master.remote origin && git config branch.master.merge refs/heads/master

That's it! You've created your branch, pushed the content and you can continue to work. You commit changes as with any other VCS, and when you're ready, issue a push to send your commits to the main server (conversely, a pull will receive changes sent to the server by other developers).

When another developer wants to check out and start working on the code for the first time, they just need to clone the master branch from your server:

git clone ssh://yourserver/git/location/app.git



Free Software