On Github ajmers / gdi-git-intro
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
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 <you@your-email.com> Date: [DATE HERE] First commit. Added hello world to repository. </you@your-email.com>
gitk
-bash: gitk: command not foundhttp://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
How 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