Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save matthewmccullough/3761691 to your computer and use it in GitHub Desktop.
Save matthewmccullough/3761691 to your computer and use it in GitHub Desktop.
2012-09-21 GitHub Open Enrollment Notes

2012-09-21 GitHub Open Enrollment Notes

Course Topics Overview

Day 1

  • Introductions
  • History of Git and your initial setup
  • Git configuration and its inheritance
  • SSH Authentication and your first repository
  • Understanding and thinking in Git's three stages
  • Adding, committing, and diff-ing code changes
  • The Similarity Index; Moving, Renaming, and Removing files
  • Overview of Git's Architecture

Day 2

  • Network protocols, proxies, and Git's speed
  • Managing and using Git Remotes
  • Branching, Tagging, and Stashing
  • Merging, Rebasing, and managing conflicts
  • Undoing your work with Git
  • Making Git work with SVN

CI and GitHub

GitHub Flow

Practice Repo

https://github.com/githubstudent/training-repo-09-12

Slides

RefCard Cheat Sheet

http://refcardz.dzone.com/refcardz/getting-started-git

Recommended Free Git Book

http://git-scm.com/book

Shell Prompt Enhancements

http://ambientideas.com/blog/index.php/2010/11/zshell-prompt-for-git/ (which links to the Bash ones)

and the uber-set:
https://github.com/matthewmccullough/scripts
which includes all my OSS work for shell scripts.

As a command line productivity framework, I've become quite attached to oh-my-zsh. It has git-enhanced prompts galore.
https://github.com/robbyrussell/oh-my-zsh

GitHub (Hub) Plugin for Git:

https://github.com/defunkt/hub

Great GitHub help pages:

http://help.github.com

Office Hours:

Any follow up Git or GitHub questions can be asked in a desktop-sharing webinar and chat room:
https://github.com/training/free

References

Class Notes

Day 1 Command Line History

git config --global user.name
git config --global user.email
git config user.email
git config user.name
git config --global -e
git config --local -e
git config --global --list
git config --system --list
history
git config --global color.ui auto
pwd
git config color.ui
pwd
tr.git
cd scratch
cd newproject
rm -rf .git/hooks
vim caesar.txt
ls
git status
git add caesar.txt
git status
git commit -m "My first commit"
git status
ls
history
vi caesar.txt
git status
git add caesar.txt
git status
git commit -m "The noblest man"
git status
history
git status
vi caesar.txt
git status
git add caesar.txt
git status
vi caesar.txt
git status
git add caesar.txt
git status
git commit -m "Woe to the hands"
git config core.editor
git config --global core.editor emacs
echo monkey > monkey.txt
git add monkey.txt
git commit
git config --global --unset core.editor
git config --unset
git config core.editor
git status
git reset HEAD monkey.txt
git status
rm monkey.txt
git status
ls
vi caesar.txt
git diff
git add caesar.txt
git diff
git diff --staged
git status
vi caesar.txt
git status
git diff
git diff --staged
git diff --color-words
git diff --word-diff 
git status
git diff --staged
git diff
git commit -m "Ruby lips"
git stauts
git status
git add . 
git status
git diff --staged --word-diff
git commit -m "Iambic pentameter FTW"
git log
history
git log --stat
history
git log --patch
git log --patch --word-diff
history
git log --pretty=full
git log --pretty=fuller
git log --pretty=email
git log --pretty=email --patch
git log --pretty=raw
history
git log --pretty=raw -1
git log --pretty=raw -2
git config alias.lg
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ci) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative --all
git loglive
vi ~/scripts/git-loglive
git loglive
history
ls
touch .gitconfig
ls -la
ls
echo "monkey" > monkey.log
mkdir build
ll ~ > build/files.class
echo "We <3 Git" build/love.class
git status
ll build
vi .gitconfig
ls -a
ls -la
git status
mv .gitconfig .gitignore
git status
git add . 
git status
git commit -m "Started strategically ignoring things"
tree
tree -a
tree
ll
rm monkey.log
generaterandomfiles 5 monkey txt
ll
git status
git add .
git commit -m "Five files marked for destruction"
git log --stat -1
l
ls
git rm monkey1.txt 
ls
git status
rm monkey2.txt
ls
git status
git rm monkey2.txt
git status
git commit -m "Deleted a couple of monkeys"
git status
ls
open . 
ls
git status
git add -u . 
git status
git commit -m "Deleted the rest of the monkeys"
git status
ls
git log --stat -3
history
ls -la
generaterandomfiles 5 file txt
ls -la ~ > listing.txt
ls -la
mkdir files
tree
git status
ls -la
git status
git add .
git commit -m "Created some files to support moving"
git mv file1.txt files/ 
tree
git status
mv file2.txt files/
tree
git status
git rm file2.txt
git add files/file2.txt
git status
open .
tree
git status
git add -A . 
git status
git commit -m "Moved all of the things"
git status
git log --stat -1
git log --stat -1 -M 
history
ll
vi listing.txt
mv listing.txt files/
git status
git add -A .
git status
git commit -m "Moved AND CHANGED a file, like we were crazy. Theseus will help."
git log --stat -M -1
git log --stat -M95 -1
git log --stat -M20 -1
history
git log
git show c1cceec 
git show c1cceec^ 
git log --pretty=raw
git status
git branch
git branch feature 
git branch
vi caesar.txt
git add .
git commit -m "Domestic fury"
cat caesar.txt
git checkout feature 
cat caesar.txt
git branch 
vi caesar.txt
git add .
git commit -m "Gave caesar a title"
git branch
cat caesar.txt
git checkout master
cat caesar.txt

Day 2 Command Line History

git clone https://github.com/githubstudent/training-repo-09-12

git diff HEAD HEAD~3
mkdir thousands
cd thousands
generaterandomfiles 9001 sample txt
git commit -m "Thousands of new files"
vim ../.git/config

echo CHANGES >> caesar.txt
git commit -m "Caesar say hi"
git pull
clear 
git branch feature1

touch thisfileisonlyonthebranch.txt
git commit -m "Only on the branch"
git checkout feature1

git diff master feature1
git diff master~2 feature1

git branch
git branch -a

git push -u origin feature1
git clone https://github.com/matthewmccullough/training-repo-09-12.git mytrainingrepo
echo CHANGE >> caesar.txt
git add caesar.txt
git commit -m "Changes"
git push 
git branch matthewmccfeature
git checkout matthewmccfeature
vim matthewmcc.txt
git commit -m"Matthew was here"
git push -u origin matthewmccfeature

git pull https://github.com/BlondeauEric/training-repo-09-12.git ericbfeature
git pull https://github.com/mmizgala/training-repo-09-12.git mmizgalafeature
git mergetool
git mergetool -t araxis
git commit
git push
touch lint.log
touch junk.txt
touch stuff.other
git clean 
git clean -n
git clean -f
git commit -m"Change one"
git commit -m"Change two"
vim caesar.txt
git commit -m"Change three"
git revert 6dbd100
cat caesar.txt
cd mytrainingrepo

git svn clone  http://ambientideas.unfuddle.com/svn/ambientideas_demo/trunk/ unfuddletrunkonly
cd unfuddletrunkonly
git log

git diff HEAD~3
echo CHANGES  >> sample5.txt
git status
git add .
git commit -m"Saves it from git"
git svn dcommit
svn
svn co https://github.com/githubstudent/training-repo-09-12.git/trunk icantbelieveitsnotbutter
cd icantbelieveitsnotbutter
svn info
clear
git tag THISISAGOODPOINT1
git tag THISISAGOODPOINT2 HEAD~7
git tag


git tag THISISAGOODPOINT3 c1ccec
git tag THISISAGOODPOINT3 c1cce
git push --tags
git checkout THISISAGOODPOINT3
cd ..
cd training-repo-09-12

git checkout THISISAGOODPOINT1
git tag -d THISISAGOODPOINT1
git branch feature99
git checkout feature99
git checkout master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment