= Version control with Git = Git is a distributed version control system originally designed for development of the Linux kernel. It is mature and robust, and possesses some advanced features that other version-control systems are lacking, such as full distributed operation and strong guarantees of content integrity through the use of cryptographic checksums. The `git` tools are installed as standard on all CSG Linux workstations and servers, and are used internally by CSG for code and content management and distribution functions. == Hints for group operation == * If you're hosting a git repository on a DoC file-space and wish to access it read/write from non-DoC machines, we recommend using the host `gituser.doc.ic.ac.uk` and the `ssh` access protocol. * If you're creating a git repository that will be used by multiple people, then you should pass the `--shared=group` option to your `git init` incantation. (Or, if you already have a git repository and don't want to re-initialize, set the `core.sharedRepository` configuration property of that repository to `group` and update the file permissions as appropriate.) * The Department offers a web-based GUI for interacting with git repositories called [[guides/version-control/gitlab|Gitlab]]. All DoC users have accounts, and login is performed using LDAP with a DoC username and password. == See also: == * [[http://www.gitref.org|Git Reference]] * [[http://progit.org|Pro Git book]] -- a freely-downloadable book on 'professional' git usage. * [[http://www.youtube.com/watch?v=4XpnKHJAok8|Google Tech Talk: Linus on Git]] * [[http://nvie.com/posts/a-successful-git-branching-model/|A Successful Branching Model]] -- if you're using git for a fully-fledged project with multiple releases, consider using some variant of the model described here.