GIT, VERSION CONTROL, AND YOU.An introduction to the tastiest version control system. Ever. Courtesy of Jeff Byrnes email@example.com
WHATCHU TALKIN’ ‘BOUT?• Who is this guy?• What is Git?• More importantly, what’s source control?• Why do I need it?• What makes Git so uber-sweet? And no so sweet?• Get the party started• Command me, o Git• Back to the Future• Branch me, baby• Embracing conﬂict• More resources
WHO IS THIS GUY?• Jeff Byrnes• Web Developer (self- taught; HTML/CSS/PHP/JS)• Trained Musician (upright & electric bass)• Learned Git in just a few months, and now I’m here to share!
WHAT IS GIT?•A distributed version control system• Created by Linus Torvalds, the guy behind Linux• Used by lots of people, big to small (think Google, Twitter, etc.)• Especially popular amongst open-source projects • GitHub, anyone? jQuery, Linux, etc.
SOURCE CONTROL? • Source control is like a wiki for your text • Lots of different systems (here’s three): • CVS • Subversion • MercurialSorry, there isn’t a logo for CVS. It was made way back when logos weren’t cool.
SOURCE CONTROL? Server• Oldersystems (CVS, Subversion) are centralized• Network access is required Committer Committer• Everyone is dependent on the server
SOURCE CONTROL? Server• Git(and a few others) are distributed• Thismeans every copy of the repository is a clone Clone Clone• Soyou can run off on your own & go nuts, or even push/pull to each other
SOURCE CONTROL? • Well great, Jeff, but what if I’m a one-person operation? • It’s also fast. Like whoa fast. • It also tracks changes on a line-by-line basis, instead of on a ﬁle-by-ﬁle basisGive some examples of how line-by-line rocks the hizzouse
THE SWEET•A history of your changes• Line-by-line changes• Cheap branching• No server needed
THE NO-SO-SWEET• Not great for binary ﬁles (images, movies, etc.)• Lots to learn• Still very much a programmer’s tool
GET THE PARTY STARTED • Install & identify yourself • Mac & Linux users: rejoice • Windows users: I’m sorry • git init • That’s it.Be sure to go over git conﬁg --global for username & email
AT YOUR COMMAND• git add• git commit• git branch• git merge• git push / git pull
BACK TO THE FUTURE (THINK, MCFLY, THINK!)• Lots of commands to undo• Here’s the two basic ones: • git revert • git reset
BRANCH ME •A branch is a separate strand of work • Think features, bug ﬁxes, ﬂights of fancy • git checkout -b branchnameBranches are cheap, and should be used wildly. Explain how checking out a branch changesthe whole working tree.
EMBRACE CONFLICT (MERGES AREN’T SCARY)• Git is conservative• Git always defers to your judgment• Throws a merge conﬂict if it even thinks something is awry• GUItools (e.g., Tower, Sourcetree, TortoiseGit) make merges way easier
MORE RESOURCES• Git - git-scm.com• Git Book - book.git-scm.com• Successful branching model - nvie.com/posts/a-successful-git- branching-model/• Git Ready - gitready.com• Get Started w/ Git - alistapart.com/articles/get-started-with-git/• Git Reference - gitref.org• Think Like A Git - think-like-a-git.net• Interactive Git Cheatsheet - ndpsoftware.com/git-cheatsheet.html