In this blog post we will introduce Git and talk about some terminologies related to Git and version control in general. We will also introduce some resources that might be helpful to read or watch.
If you are new to the Git world, you might hear some words that sound very similar and sometimes confusing. Below are a few definitions that might be useful;
Git is a version control protocol and a tool that is effectively the reference implementation for interacting with repositories in that format. Git currently is the most popular distributed version control system. It allows you to have your own local repositories. You can work on your code without having access to the internet, for example, committing new versions, viewing logs and comparing versions. Git Graphical User Interfaces (GitGUI) such as GitHub Desktop, SourceTree, GitKraken are Git clients/tools.
GitHub, GitLab and Atlassian’s BitBucket are public hosting services for Git repositories with web interfaces and many common collaboration workflows for software projects depend on functionality provided by these services. So they are not the same thing: Git is the tool, GitHub is the service for projects that use Git and it is built on top of Git. Git is installed locally while GitHub is hosted on a remote server e.g. in the cloud.
GitLab is very similar to Github, however, it was initially designed with a built-in Continuous Integration (CI)/Continues Development (CD) tool. The Continuous Integration framework inside GitLab is ranked as one of the best tools out there, if not the best.
Previously, to use CI/CD with a Github repository would require a 3rd party tool such as Jenkins, however GitHub has now introduced its own built in CI/CD called Github Actions. Github Actions enable users to quickly automate tests (CI), and deploy (CD) code. If you are interested, very thorough explanation can be found here.
Another distinction between GitHub and GitLab is that the software that runs on GitHub.com is not open source and it means that you can not have GitHub.com like services on your own infrastructure although GitHub enterprise offers a licence to deploy to your own servers, AWS, Azure or Google Cloud. However, GitLab is an open source project and you can install and run GitLab services on your own servers (only community edition is free).
GitHub Pages is a static hosting service that auto-generates and commits HTML using Jekyll. Jekyll is a static site generator and GitHub Pages has built-in support for Jekyll. GitHub Pages can also directly take HTML, CSS and JavaScript files from a repositories on GitHub. More information can be found here.
This website is a simple guide for getting started with Git and it has translations in a few other languages:
This website is also introductory, however it also has screenshots to ease understanding:
This website is from the the GitHub training team, it provides an introduction to both Git and Github Pages:
This website covers many common git topics which it categorises by experience level, from beginners to advanced:
This website explores how Git commands affect the structure of a repository. You can try commands from your browser:
This website is for Advanced beginners with Git. You should know how to create a repository, add and commit files to it, and you should probably have some idea of why you might want to use a branch:
This website is specifically designed for Computer Scientists and is using terms that they are familiar with:
This book has 522 pages and it has everything you need to know about Git:
This book is 31 pages and it has a bottom up approach rather than looking at it only in terms of high-level commands:
This book is 44 pages and provides many Git command examples for common tasks, rather than focusing on the technical details of git commands:
This zine contains a list of issues people commonly encounter when using Git along with concise ways of addressing them:
This video is an introduction to Git for beginners. You will learn Git and all the Git commands to create repositories on your local machine & GitHub, commit changes, push & pull files. Also you will get your hands on with some advanced operations in Git like branching, merging, rebasing. It is a long video at 1 hour and 44 minutes:
This video is Git & GitHub crash course for beginners and is about 30 minutes:
This is a very long video and it is a complete Git and GitHub Tutorial for beginners:
This video is from the creator of the distributed version control system Git:
This video is for more advanced users. They introduce the obscure commands that will reveal a sort of internal API that is there for you to use:
This video is advanced Git and covers graphs, hashes and compression:
This cheat sheet contains common tasks:
For queries relating to collaborating with the RSE team on projects: rse@sheffield.ac.uk
Information and access to JADE II and Bede.
Join our mailing list so as to be notified when we advertise talks and workshops by subscribing to this Google Group.
Queries regarding free research computing support/guidance should be raised via our Code clinic or directed to the University IT helpdesk.