http://git-scm.com/downloads
*Note for Windows Users: use Git Bash instead of Terminal
Select a free account - your content will be public.
https://github.com/join
Some "rules"
Version control allows you (and your team) to do two powerful things
Create anything with other people, from academic papers to entire websites and applications.
Mistakes happen. Wouldn't it be nice if you could see the changes that have been made and go "back in time" to fix something that went wrong?
The Horror!
Rainbows and bunny rabbits!
1990s -- CVS (Concurrent Version Systems)
2000s -- SVN (Apache Subversion)
2005 -- Git (well, Git)
Examples: CVS, SVN
One central server, each client (person) checks out and merges changes to main server
Examples: Git, Mercurial
Each client (person) has a local repository, which they can then reconcile with the main server.
Git is not the same as Github
While a README isn't a required part of a GitHub repository, it is a very good idea to have one. READMEs are a great place to describe your project or add some documentation such as how to install or use your project.
cd ~/
git clone https://github.com/username/FORKED-REPO-NAME.git
cd FORKED-REPO-NAME
git remote add origin https://github.com/original-username/FORKED-REPO-NAME.git
# Assigns the original repository to a remote called "origin"
git remote -v
# Lists URL of remote repos
Setup name and email in gitconfig
$ git config --global user.name "Your Name Here"
# Sets the default name for git to use when you commit
$ git config --global user.email "your_email@example.com"
# Sets the default email for git to use when you commit
$ git config --list
Go to home directory
cd ~/
OR
cd Users\username
Create a "working directory"
mkdir my-first-repo
cd my-first-repo
Initialize repository with Git
git init
git status
Create a new hello_world.txt file in your new folder
Check repo status
git status
Tell Git to track our new file
git add hello_world.txt
git status
File is now tracked by Git
Commit the change
git commit -m "First commit. Added hello world to repository."
How is this all different than just saving a file?
git log
commit [HASH HERE]
Author: Your name
Date: [DATE HERE]
First commit. Added hello world to repository.
gitk
-bash: gitk: command not found
http://git-scm.com/downloads/guis
-Error in startup script: unknown color name "lime"
Replace "lime" with hex code #99FF00 in /usr/local/bin/gitk
If you haven't committed yet
Open hello_world.txt and add some new text
git checkout hello_world.txt
Look at hello_world.txt. Your changes are gone.
Open hello_world.txt and add some new text
git add hello_world.txt
git reset HEAD hello_world.txt
git checkout hello_world.txt
Look at hello_world.txt. Your changes are gone.
Open hello_world.txt and add some new text
git add hello_world.txt
git commit -am "Changing and committing some lines"
git log --pretty=oneline
git revert [HASH]
Look at hello_world.txt. Your changes are gone.
Create a new branch called version2
git checkout -b version2
Add new lines to hello_world.txt
git add hello_world.txt
git commit -m "Adding changes to version 2"
See all branches. Branch with * is active
git branch
Switch to master and look at hello_world.txt
git checkout master
Switch to version2 and look at hello_world.txt
git checkout version2
Switch to master and merge changes
git checkout master
git merge version2
*rebase is another option, but will not be covered in this workshop
Change first line in hello_world.txt in master branch
git add hello_world.txt
git commit -m "Changing first line in master"
Change first line in hello_world.txt in version2 branch
git checkout version2
# open hello_world.txt and change first line
git add hello_world.txt
git commit -m "Changing first line in version2"
Merge from master into version2
git merge master
You will be notified of a conflict. Go to the file and fix the problem. Then commit your edits.
git push origin master
Go look at your github repo online
If you are working with a team, you want to make sure that you have everyone's changes before pushing your changes to the GitHub repo
# Commit local changes
git commit -m "My latest commit"
# Pull changes other people have made
git pull origin master
# Fix any conflicts (see merge conflicts above) and commit
git commit -m "Fixing merging conflicts"
# push local changes to GitHub
git push origin master
Fork This Repo
https://github.com/ajmers/gdi-git-introHow to manage pull requests is out of the scope of this short workshop, but you can learn more from the Github Collaborating Tutorials
Please take a moment to give us your feedback. http://bit.ly/2e4dTxP