- 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
- 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
- Pull Requests
- Continuous Integration
- Commit Status API
https://github.com/githubstudent/training-repo-09-12
- http://githubtraining.s3.amazonaws.com/github-git-training-slides.pdf
- https://speakerdeck.com/u/matthewmccullough/p/the-basics-of-git-and-github
- https://speakerdeck.com/u/matthewmccullough
http://refcardz.dzone.com/refcardz/getting-started-git
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
https://github.com/defunkt/hub
Any follow up Git or GitHub questions can be asked in a desktop-sharing webinar and chat room:
https://github.com/training/free
- http://teach.github.com
- http://delicious.com/matthew.mccullough/git+gui
- http://delicious.com/matthew.mccullough/git+perforce
- http://kb.perforce.com/article/1417/git-p4
- http://delicious.com/matthew.mccullough/git+workflow
- Additional Git education resources
- Command prompt autocompletion
- Workflow
- Git aliases
- https://github.com/matthewmccullough/dotfiles
- Look for the file named
gitconfig
- Randomly generate text
genrandom -n 5 40 text
- Works on Mountain Lion (Mac OSX)
- Homebrew
- Linux Add / Remove vs Move Discussion
- Ship of Theseus
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
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