Fill yer boots! The content of this web site has been heavily inspired by many, many resources. Although this list is kept fairly up-to-date, there may be additional, relevant resources at bit.ly/dev-workflow.
If you've previously found Git difficult to learn, you may want to start with the following resources which explain why Git is difficult for many learners, and give an alternate approach to diving into Git.
Mega Learning Git Resources
These resources are soup-to-nuts reference resources which aim to teach you Git.
- Video lessons: Collaborating with Git: Crafting Workflows at the Command Line
- Git Documentation
- Pro Git (book)
- Learn Git Video Tutorial
- Git It
- Git Magic
- Git Guys
- Learn Version Control with Git
- Think Like a Git - I found the first two sections to be less useful, so I've jumped you ahead to where things get more interesting
- Git Memo - an interesting list of things you might want to know, but aren't normally covered in a soup-to-nuts reference guide
Cheat Sheets and Quick References
Quick references for Git commands; often print-friendly.
- Git Cheat Sheet includes reference commands and tips for best practices
- Undoing, Fixing, or Removing Commits in Git
- Git Cheat Sheet - Chrome Plugin
The following resources help you see how to work together with others. They typically focus on the 10,000ft view of teams working together first, and then demonstrate how to implement the work flow by giving you a set of specific commands to follow.
- Sample work flow diagrams
- Detailed Workflow Tutorials
- Git Workflows
- Dissecting Effective Developer Workflows to Save Time & Lower Costs (not Git-specific; talks about cross-functional teams)
- Git Branching and Forking in the Enterprise
- Git Forks and Upstream
The step-by-step commands a developer might take when using a specific workflow. These resources focus on a copy-paste series of Git commands a developer might issue. These resources are approximately in order from strict "schedule release" to "continuous deployment" strategies.
- Distributed Git - Maintaining a Project
- Git Flow and Git Flow Cheatsheet
- Simplified Git Flow
- Git Workflow for Agile Teams
- Branch Per Feature Branching Strategy and Branch Per Feature
- GitLab Flow
- GitHub Flow
- Agile git and the story branch pattern
- Git Best Practices - contains a list of links to various branch workflows
Tips, tricks, and articles about the version control aspects of continuous integration, continuous delivery, continuous deployment. See also: Workflow Applied.
Merge vs. Rebase Workflow
It's an age-old debate. These resources do a good job of explaning the pros and cons of each.
- Understanding the Git Workfow
- A truce in the merge vs. rebase war
- Visualized Git practices for team: branch, merge, rebase
- A Rebase Workflow for Git
- When to Merge vs. When to Rebase
- "Merge pull request" Considered Harmful
- The Case for Git Rebase
- Git team workflows: merge or rebase?
Git for Folks Who Know a Centralized VCS
If you're used to Subversion, CVS, or another centralized version control system, these resources do a good job of mapping your old world view onto Git's way of thinking.
Migrating from Subversion
So you've decided to make the switch! Congrats! Your team may or may not be on board. The process of switching to Git could take you more time than you want it to. Be patient. Very, very patient. It will pay off in the long run. To get the team moved over, the popular progression is to start with the svn-git bridge (use Git locally on a Subversion repository), and then once people get comfortable with Git, make the switch.
- Effectively Using Git with Subversion
- Multi-Part Tutorial on Migrating to Git
- tl;dr converting a repo from SVN to Git
Restricting Permissions by Branch
If you're coming from Subversion, you might really miss having per-branch permissions. This does not exist natively in Git, but the following code-hosting systems do support it. This is not an exhaustive list of options).
- self-hosted, Free / Libre open source:
- self-hosted, enterprise software
Adding enforced workflow rules with hooks in Git.
- An Introduction to Git Hooks
- How To Use Git Hooks To Automate Development and Deployment Tasks
- Git Hooks
Git is not a dependency manager. You should use the dependency manager your language provides and version your build manifest. Sometimes, however, you will want to include libraries or other "sub projects" in your repository. You have two options at this point: subtrees (nested repositories without metadata tracking); or submodules (Git is responsible for fetching dependencies). Submodules require very precise attention, and can be frustrating to work with.
- Subtree: An alternative to submodule
- As I Undertand Subtrees
- Mastering Subtrees
- Mastering Submodules
- Drupal and Submodules a great case study even if you don't use Drupal
The 50,000ft view of how teams work together. These resources focus on a manager's perspective of how a team makes decisions and works together. They rarely include references to Git.
Commit Messages and Commit Granularity
How often, and how much, you should include in your commits.
- Well-formed Commit Messages
- Drupal.org Standard for Commit Messages
- 5 Useful Tips for a Better Commit Message
- Using Notes to Amend Commit Messages
- The Case for Small, Logical Commits
If you're having a hard time wrapping your head around what Git is doing with individual commands, these resources will help you "see" what happens when you issue various commands.
- ungit a fantastic visualization tool for (smaller) git repositories
- Learn Git Branching an interactive demo
- Git for Ages 4 and Up
- GitVersionTree provides a top-to-bottom tree graph of your git branches
- Git -- the big picture provides bottom-to-top tree graph of git branches
Slide Decks About Git
These are some of the ways other people have taught Git workshops.