Introduction To Git Workshop
- 2. Get Git
• On Matrix
•
I have accounts for you
• On Windows
•
http://msysgit.github.io
• On OS X
•
brew install git
• On Linux
•
sudo apt-get install git
• Otherwise
•
http://git-scm.com
- 3. About Me
Django and JavaScript Developer
Founder @ The Boulevard Platform
Engineer @ FoxyProxy
Created open source projects:
BitBucket Release Note Generator
django-email-changer
Exploit Me Suite
- 5. Not Just For Code
(but mainly for code)
http://government.github.com
- 7. About Today
What we will cover
• Creating Repos
• Checking Out
• Committing
• Basic Branching
• Basic Merging
• Pushing & Pulling
What we won't
• git reset
• Changing history
• Rebasing
• Adding/Removing
Remotes
• Partial Staging
• Fetch
• Tags
- 8. Making A Git Repository
Normal Repository
Bare Repository
Cloned Repository
- 11. A git repo without a working directory
(this is what you want on the repo)
Bare Repository
- 18. What’s The Status Of My Files
Right Now?
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#
(use "git rm --cached <file>..." to
unstage)
#
# new file:
index.html
#
- 21. Commit File Exercise Result
Committer: Tom Aratyn <mystic@nelson.local>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:
git config --global user.name "Your Name"
git config --global user.email you@example.com
After doing this, you may fix the identity used for this commit with:
git commit --amend --reset-author
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 foo
- 22. The Log
Git keeps a log of everything you commit,
who wrote authored it, and who committed
it.
- 23. View The Git Log Exercise
$ git log
$ git log --graph
$ gitk
- 26. The Parts Of A Log
List of commits and branch pointers
A commit is made up of:
•
•
•
•
•
SHA1 id
Message
Files
Author
Committer
- 31. Change The Last Commit Exercise
$ git commit --amend -m "initial
commit with an html file"
$ # has the author changed?
$ gitk
- 32. Author Vs. Committer
Git is made from from the ground up for
multiple developer projects (Linux).
Large projects often distinguish between the
author (who wrote the patch/code) and the
committer (who let it into the blessed
repository)
- 33. Update the Author Exercise
$ git commit --amend --resetauthor
# why did the screen change ?
# type in ":wq" to leave vim.
- 34. How To Remove A File?
What if we committed a file we no longer
need can we get rid of it?
Yes & No
- 36. No, It'll Be In Past Versions
The whole point of version control is you can always recover old
files.
- 37. Remove A File Exercise
$ git rm index.html
$ ls
$ #Notice how the file is now gone
$ git status
$ #Notice how the file is staged
$ git commit -m "Removed
index.html"
- 39. Branching
Fast and easy branching is git's killer
feature.
Branches let development progress on
multiple fronts separately and
simultaneously.
- 40. Check Your Branch Exercise
$ git branch
$ git branch –a
$ # What's the difference between
the two commands?
- 41. Create A Branch Exercise
$ git branch workshop-example
$ git branch
$ # what branch are you on?
- 43. Switch To A New Branch
Immediately Exercise
$ git checkout -b fix-bug-123
$ git branch
$ gitk
- 44. Making A Change On A Branch
Exercise
$ # edit index.html
$ git add index.html
$ git commit -m "Added some initial
html"
- 46. Merging Process
1. Go to the branch you want to merge into
• Often the branch you branched off of.
• Usually "master" or "develop"
2. Do the merge
- 47. Two Three types of merges
1. Fast Forward Merge
2. Basic Merge
a. Conflicted Merge
- 48. Only available when the branch can be cleanly applied onto your
current branch
Fast Forward Merge
- 49. Fast Forward Merge Exercise
$ # (assuming you have a change on
fix-bug-123 - use gitk to check)
$ git checkout master
$ git merge fix-bug-123
$ gitk
- 50. Basic Merge Exercise
Prep
Add add a div on the master
branch
Change the title on the fixbug-123 branch
Recall
git checkout
git add
git commit
- 54. Sharing Is Caring
So far everything we've done is on the same
repo but projects need to be shared.
Git lets you push your changes to others
and pull the changes others made.
- 55. Pushing Exercise
$ # Recall that we cloned our bare
repo
$ git push origin master
$ cd ../workshop.bare.git
$ git log
- 56. Pulling Exercise
Prep
1. Clone the bare repo
again
•
Call it workshop.2.git
2. Commit a change to
workshop.git
3. Push the change
Recall
git clone
git add
git commit
git push
- 61. About Today
What we covered
• Creating Repos
• Checking Out
• Committing
• Basic Branching
• Basic Merging
• Pushing & Pulling
What we didn't
• git reset
• Changing history
• Rebasing
• Adding/Removing
Remotes
• Partial Staging
- 62. Where to next?
Learn more at from "Pro Git"
http://git-scm.com/book
Start Your Project:
Free Open Source Repos
http://github.com
Free Private Repos
http://bitbucket.org
GUI: http://SourceTreeApp.com
- 64. A link to this presentation will be on
http://blog.tom.aratyn.name
@themystic
tom@aratyn.name (I can email it to you)
Thank You!