Git

Git is a distributed revision control and source code management system with an emphasis on speed. Every Git working directory is a full-fledged repository with complete history and full version tracking capabilities, and is not dependent on network access or a central server. Git is free software distributed under the terms of the GNU GPLv2.

Git is primarily a command-line tool but there are a few really good desktop applications that make it easier to work with (at the cost of hiding the advanced features). Working with a GUI can be hugely beneficial to mitigate the steep learning curve, but the recommended way to use git is using the command-line interface or CLI.

Free Repository Providers

  • GitHub

    A well-supported and popular version control provider. Their desktop application GitHub Desktop is high-quality, feature-rich GUI for Windows and Mac. GitHub offers unlimited public and private repositories and ability to create an ‘organization’ for free to host team projects, with limited monthly credits for automated builds. GitHub excels at providing a great experience around git and source code management, with good options for builds and deployment integrations.

    GitHub Education Pack provides access to a bundle of popular development tools and services which GitHub and its partners are providing for free (or for a discounted price) to students.

  • GitLab

    The other big player in the version control space and the first choice for Enterprise git deployments. Offers free unlimited public and private repositories with unlimited collaborators. Offers some nifty features that GitHub doesn’t offer in their free tier such as protected branches, pages and wikis. Offers a self-hosting option if you want to run your own git server. Their platform is geared towards serving a complete and comprehensive DevOps workflow that is not just restricted to source code management.

  • BitBucket

    Another popular service, unlimited private repositories for up to 5 collaborators.

Learning Resources

Basics

  • GitHub Learning Lab offers some excellent courses on mastering the basics of git on their platform. Their Introduction to GitHub course is great place to get started.
  • GitHub’s Getting Started Guide Walks you through creating a repository on GitHub and basics of git.

  • Learn Git Branching: A browser-based game designed to introduce you to some of the more advanced concepts.

  • Git Immersion: A hands-on tutorial that sets you up with a toy project and holds your hand through project development. Contains many useful aliases and shortcuts for faster workflow.

  • Atlassian Git Tutorials: One of the best reading resources around git and version control. Contains a very good set of tutorials but more importantly has a comprehensive set of articles around the important topics in git and even the history of version control systems. Focuses on providing a detailed explanation of how git works rather than simply listing the commands.

Intermediate

Advanced

References & Help

  • Atlassian Git Cheat Sheet: A handy set of commands to have around your desk for those quick command look ups.
  • How to Undo Almost Anything with Git: A blog post from GitHub that lists some scary scenarios in git and how to undo almost anything.
  • Dangit, Git!?: Quick references for getting out of bad situations in git. Very powerful set of fixes, but doesn’t provide a good explanation of what happened / how the fix works - read before you blindly follow the instructions.
  • Official Git Documentation Extremely thorough documentation of git. It can be quite dense if you’re new to git, but this the most authoritative and updated documentation for git CLI usage. Best used to look up command-line usage, parameters and their rationale.
  • Man pages: The git command line interface ships with a very good set of man pages accessible by running man git on the terminal and is available wherever git is installed. If you’re not familiar with man pages, you can read about it here.