#Robotics+IEEE QuickFix #1
###Git and GitHub Workshop
This repository hosts reference materials and a sample repo for a hands-on Git/GitHub seminar.
Through the magic of Git, we've mirrored the course materials on GitHub.com for folks who can't login in through UC's CLS. Most project-specific links should include one link to the github.uc.edu version (and one in parentheses for the github.com version). If we've missed any of those, or if you notice any other kinds of brokenness, feel free to file an issue (on github.com) or a pull request for the "origin" repository here at UC. :)
tl;dr version
- Sublime Text (cross-platform, free to try)
- the official GitHub client for your platform (Mac, Windows)
- On Linux:
<your package manager's install command> git-core
plusgit-cola
(KDE) orgiggle
(Unity/GNOME/XFCE) if you want something a bit nicer thangitk
for visualizing your source tree.
We know that not everyone at our workshop will be eager to dive into a Unix shell and start using Vim and console git
commands. So out of consideration for folks without much command-line experience, and for consistency, we'd like everyone to install Sublime Text the official GitHub GUI clients before coming to the seminar.
These are straightforward, one-double-click installs for Mac and Windows.
- Sublime Text is available for all three major OSes (not Amiga, sorry), has good out-of-the box keybindings and syntax highlighting, and pretty good Git integration with a plugin (for more advanced users).
- The official GitHub client for Windows includes a self-contained installation of the Git command-line tools, and a colorized Powershell Git environment, which saves you the effort of installing msysGit or some other distribution. (Recent versions of Mac OS X already have
git
installed, and Terminal.app should be somewhere in your "Applications" folder.)
All that being said, if you're comfortable using some other text editor (that is not Microsoft Word, sorry) and/or prefer to do all your Git stuff from the command line, that's just fine. Just realize that we simply won't have time to work out installation issues if you stray too far off the path.
##Resources on the Web
The References (on github.com) article in this project's wiki is very comprehensive, and already includes most of the resources listed below. It's organized by skill level, so you can tell at a glance which ones are useful to you.
- Mastering Markdown - on GitHub.com; Markdown is the markup language used in GitHub issues, comments, and the default
README.md
for new repositories - Documentation on git-scm.com - online help, videos, and ebooks, straight from the source
- GitHub Help - comprehensive online help that covers Git and GitHub topics
- git ready - cookbook-style help for Git, when you already sort of know what you're trying to do but maybe don't know the precise Git nomenclature for it
- Highest voted questions tagged 'git' on Stack Overflow
- Webcast • The Basics of Git and GitHub • July 2013 - a 50-minute webcast hosted by a GitHub employee that provides a high-level overview of what Git is, why you'd want to use it, and how GitHub.com layers extra collaborative features on top of Git SCM.
- GitHub Training & Guides YouTube channel (check out their video intro for a quick chuckle)
- GitHub Guides: GitHub & Git Foundations - bite-sized videos covering one Git or GitHub topic each (e.g.,
git diff
,git rm
, branch, checkout, and merge) - Jessica Kerr: "Git Happens" - a 54-minute conference talk which explains Git concepts like branching, merging, and rebasing in a highly visual way. Good if you're compfortable with basic Git usage, but have always wondered about more advanced usage like branching and rebasing. If you stick with it until the end, you'll be rewarded with an epiphany about
git rebase -i
. Promise. - Michael Schwern: "Git for Ages 4 and Up" - a demonstration of advanced Git functions (branch, merge, rebase) using Tinker Toys. Over an hour long, but totally worth it for the epiphanies you'll have about HEAD, tags, branching, and merging, if you didn't really "get" those concepts before.
I highly recommend Git Immersion (created by locals at Neo) for hands-on learning with the Git command-line tools. For these exercises, you can use UCFileSpace for shell access and UC's GitHub Enterprise server as the remote "origin" repository, if you wish.
Neo's tutorial helps you install Git on your workstation (but you can use UCFS for that; on github.com), gets you up-and-running with a sane Git configuration, walks you through all of the common commit/push/merge operations, and even forces you to break (and fix) things in some of the advanced lessons. Each lesson is short, and easy to go back and reference later when you run into trouble on a real project. Although the tutorial's sample project is comprised of Ruby code, no familiarity with the Ruby language is actually required to complete the tutorial.