Intro to Version Control Using Git
Lindsey Bieda
Goals for the class
- Basic understanding of what version control is
- Basic understanding of git is and how to use it
- Knowledge of github and what it provides us
Version Control System
A tool that assists in the management of changes to documents.
What does that mean?
- You can make changes to documents and save those changes.
- You can undo changes
- You can include changes from other people*
- You can multiple change-sets simultaniously*
Not just for programming
Anytime you are working on any set of documents that you are making changes to and want to save the state of version
control is extremely useful.
A distributed version control system.
Distributed, in this case, basically means that we can have the same thing existing in multiple locations
A web service for programming projects that use Git.
Many Open Source projects hosted here
Collaboration
- Git makes collaboriton easy
- GitHub makes collaboration even easier
- Easy to copy existing code, update, and share updates with others
Tool Check
GitHub
- If you haven't already create a GitHub account at github.com
- Login to your account
- Set your avatar at gravatar.com
- View your GitHub profile page:
http://github.com/your_username
note: for gravatar use the same email your signed up for github with.
GitHub for Mac/Windows
A program that lets us easily use git and github.
Tool Check
GitHub for Mac/Windows
- If you haven't already download GitHub for Mac/
Windows and install
- Open GitHub for Mac/Windows
- Login to your GitHub Account
Repository
Where our files live
Also contains:
- A record of the changes made to those files
- Who made those changes
- When those changes were made
Also referred to as a repo for short.
Activity
Our first repository
- Open the GitHub application
- Click "add" to create a new repo
- Give it a name and a description
(e.g. "My first repo")
Commit
To save the state of a single or collection of changes.
How to make a commit with git
Whenever you make a change inside the folder where your repo is the GitHub app notices and will ask for
a commit message in order to save the changes.
Demonstrate this with the GitHub app.
Commit Message
A note that describes what the commit is about.
Bad Commit Messages
- Whoops
- Fixed a thing
- I have no idea
- Everything works now
- I am so angry at the universe right now
Better Commit Messages
- Added the missing read-me file
- Fix: Extranous semi-colon removed
- Moved the cat-pix folder inside the images folder
- Resolved the problem where content would not display
- Added a hack in the CSS to fix the bug with IE
Things to keep in mind
- Avoid being vague
- Realize that not only are you communicating with future-you, but potientially others
- When you can, focus on why you did something not what you did
Look at commit messages for https://github.com/LindseyB/intro-to-git
Activity
First commit
- Open the folder for your repo from the GitHub app
- Create a new file named "README.md" inside the folder
- Commit your changes from the GitHub app
Make sure to provide a good description for your commit
Syncing
In the command-line world known as pushing
Takes the changes you made on your computer and sends them off to the GitHub website
Activity
Sync your changes
- Open the GitHub app
- Click on sync to send your changes to the GitHub website
- View the changes on GitHub:
https://github.com/[username]/[repo name]
A quick note on READMEs
README files are generally provided with software or other files that provides information for the person opening it.
They can contain:
- How to use a piece of software
- Who made the software
- Any bugs in a chunk of software
According to the jargon file the name comes from Lewis Carroll's Alice's Adventures In Wonderland
when she encounters "Eat Me" and "Drink Me"
READMEs on GitHub
- Always will display on the main page on the repo
- Are important to those viewing the project so they can see what it is about and how to use it
- Supports the ability to make the content appear with styling using MarkDown
- Example: reveal.js README
MarkDown Example
# Title
* item 1
* item 2
* item 3
*italic text* __bold text__
You Don't Have to Use MarkDown
Plain text will still display perfectly fine
Activity
Add some content to your README
- Open "README.md" in a text editor
- Add any content that you desire with or without MarkDown
- Commit your changes from the GitHub app
Make sure to provide a good description for your commit
- Sync your changes
- View your new README on the GitHub website
https://github.com/[username]/[repo name]
Commits don't need all files
We can tell git that we only want to commit changes to some files rather than all.
When do we want to only commit some files?
- If we don't want to save our changes in other files.
- If the other files are in some broken state.
- If the other files are still "works in progress".
How do we commit only files we want in the GitHub app?
The GitHub app uses checkboxes to let us select which files we want to include as part of our commit.
Activity
Commit only one file
- Create "NewFile.md"
- Make some changes in "README.md"
- Commit your changes from the GitHub app and be sure to only select "NewFile.md".
- When you click on the commit only this file will show up in the list of changes.
Branch
- Where your changes live.
- By deafult you start out in the master branch
- Difference branches are like parallel universes: they may be very different from one another
or very similar and they exist at the same time.
look at https://github.com/rails/rails
Creating a new branch
When we create a new branch we keep all the old files as is, but are able to make changes that don't affect the master branch.
Why would we do this?
- Working on code we are unsure is correct.
(e.g. bug fixes)
- Working on a completely new version of something.
- Working on a specific feature we want to add.
How do we create a new branch in the GitHub app?
Demonstrate this with the GitHub app.
How do we view a different branch on GitHub.com?
Demonstrate this with https://github.com/rails/rails
Activity
Creating a new branch
- Create a new branch named "song"
- Add any song lyrics to your "README.md" file
- Commit your changes
- Sync your changes
- View your README on the GitHub website
https://github.com/[username]/[repo name]
note: it will still look the same
- Change branches on the github website and now look at your README.md file.
Merging
When we take the changes of one branch and pull them into a second branch.
When do we want to merge?
- When we have tested our new bug fixes and want to use it.
- When we are ready to go live with new features.
- When we are ready to go live with a new version.
- When we want to combine two new features together.
How do we merge in the github app
Demonstrate this with the GitHub app.
Activity
Merging a branch
- Merge the song branch into the master branch
- Commit your changes
- Sync your changes
- View your README on the GitHub website
https://github.com/[username]/[repo name]
note: it should now have your song lyrics
Rolling back commits
Sometimes you want to undo a commit, but still keep your changes.
How do we roll back in the github app?
Demonstrate this with the GitHub app.
Reverting a commit
Sometimes you want to completely undo a commit.
How do we revert in the github app?
Demonstrate this with the GitHub app.
Activity
Reverting some changes
- Open "README.md" and add "Changes I don't want" to it.
- Open the GitHub app and commit your changes.
- Now click on the commit from the list and click the revert button.
- Notice you will now have a new commit that says "Revert..."
Bonus: Activity
Try Git Command-line
- Open Code School - Try Git.
- Run through the simple exercises on the web.
- If you have time, try it on your computer.