** This talk has probably the best discussion of practical use of git, and explanation of how git works internally, that I've seen. I highly recommend following along hands-on with his examples. This talk helped me understand merges much better

** This talk has probably the best discussion of practical use of git, and explanation of how git works internally, that I've seen. I highly recommend following along hands-on with his examples. This talk helped me understand merges much better

Introduction

Git is distributed: every developer has a copy of the whole project and its history, this doubles as backup as well as makes operations super fast since you don't need to go through network.

Git is about tracking changes to a set of files in a directory tree, in a way that preserves the history of all changes in a robust way. Git is optimized for fast operation even on very large source repositories, and for distributed operations. 3 main principles of Git are:

Git is fully distributed - every repository has the complete history (record of every change set, and the state of the full source tree for every single commit) Each repository operates in a completely local and standalone fashion. No network operations (e.g. communicating with a master server) are required in order to carry out operations.

Git has powerful changeset management - Git has very flexible changeset editing and easy merging from other repositories. With Git you can go back in history and edit commits, delete them, reorder or even merge lots of commits into a single commit for publishing. You can do fine-grained changeset management (i.e. the ability to commit only a portion of the modifications in the current checked-out tree). Also, Git has strong support for tracking other repositories with the ability to merge from multiple sources easily, and to merge only some of the commits from a particular source (cherry-picking).

Kernel development with Git

Videos

This talk is a basic introduction to the motivations for git (including the history around Linus' use of bitkeeper), and mostly about what git is not (not CVS, not subversion). This talks includes discussion of aspects of git that are different from other version control systems, and why this is important. Warning: Linus has a jovial, apparently arrogant sense of humor, that some find mildly offensive.

Pratical Guide to Using Git, a tutorial given by the very experienced kernel developer James Bottomley at the Ottawa Linux Symposium 2008

This talk has probably the best discussion of practical use of git, and explanation of how git works internally, that I've seen. I highly recommend following along hands-on with his examples. This talk helped me understand merges much better