Offsite Resources

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.

Cheat Sheets and Quick References

Quick references for Git commands; often print-friendly.

Workflow

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.

Workflow Applied

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.

Continous Delivery

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.

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.

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).

Git Hooks

Adding enforced workflow rules with hooks in Git.

Dependency Management

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.

Team Governance

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.

Visualizing Git

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.

Slide Decks About Git

These are some of the ways other people have taught Git workshops.