Git continues to encroach upon the space of existing version control systems. More and more development projects are opting for Git over the likes of CVS and Subversion. But Git is not an easy system to handle.
You'll need someone to give you a nice, gentle introduction. I've long since elbowed out all other version control systems in favour of using this colourfully-named version control system exclusively. If you like, I'll come along and be the one to give you that gentle introduction.
Git is a powerful, distributed version control system that is particular well-suited for large development projects that include numerous parallel development branches. The Linux Kernel developers use it for heaven's sake, a project with thousands of contributors. Last I checked, Linux recently went beyond 15 million lines of code. Nevertheless, Git is just at home servicing more humbly-sized projects too.
I ordinarily cover the following core topics:
Introduction to Git
- History and philopsophy
- Centralised vs. distributed architecture
- Local vs. remote operations
- Comparisons to other VCSs (e.g. CVS, Subversion)
Installation (Windows and Linux)
- Installing the core software
- Installing GUI tools (e.g. TortoiseGit)
Basic Operations
- Initialising
- Cloning
- Configuring
- File tracking and statuses
- Staging
- Committing
- Maintaining an ignore list
- Tagging
Repository History
- Viewing the log
- Viewing diffs
- Customising log output
- Rewriting recent history (undoing)
Labels and Specifiers
- Data structure of a Git repository
- Revision specifiers
- Branches
- Visualing labels and specifiers
Working in Branches
- Creating a branch
- Basic merging
- Three-way merging
- Dealing with conflicts
- Rebasing
Remotes
- Cloning from remotes
- Remote branches
- Fetching and Pulling
- Pushing
Using GitHub
- Setting up a new project
- Importing
- Forking
Example Workflows
- Branching workflows
- Long-running branch
- Topic branches
- Organisational workflows
- Centralised
- Integration-manager
- Dictator and lieutenants
Maintaining Your Own Server
- Protocols (HTTP, SSH, Git)
- Bare repositories
- Securing with SSH
Submodules
Working with Subversion Repositories
- Communicating with a SVN repo
- Migrating from an SVN repo