Difference between revisions of "Githandson"
From Gridkaschool
(→Git Hands-on) |
|||
Line 4: | Line 4: | ||
'''''Note that lines beginning with a $ sign implies a shell command!''''' |
'''''Note that lines beginning with a $ sign implies a shell command!''''' |
||
+ | ==Exercise 1 (Configuration) == |
||
− | |||
* $ mkdir -p ~/school/git |
* $ mkdir -p ~/school/git |
||
* $ cd ~/school/git |
* $ cd ~/school/git |
||
Line 20: | Line 20: | ||
** $ git config --global core.editor emacs # flame bait |
** $ git config --global core.editor emacs # flame bait |
||
** $ git config --global core.editor vim |
** $ git config --global core.editor vim |
||
+ | |||
+ | ==Exercise 1 (Basics) == |
||
'''Let's commit some stuff to git...''' |
'''Let's commit some stuff to git...''' |
||
+ | |||
+ | * $ git init |
||
+ | * $ git status |
||
+ | * $ touch readme.txt |
||
+ | * $ git commit |
||
+ | * $ git add . |
||
+ | * $ |
||
* $ git clone git@naf-school04:gitlab |
* $ git clone git@naf-school04:gitlab |
||
* $ cd gitlab |
* $ cd gitlab |
||
Line 65: | Line 74: | ||
** ''use “fixup” or “squash” on the fix (make sure you understand the difference)'' |
** ''use “fixup” or “squash” on the fix (make sure you understand the difference)'' |
||
** $ git log # examine the differences |
** $ git log # examine the differences |
||
+ | |||
+ | |||
+ | === Git cheat sheet === |
||
+ | |||
+ | ====Git configuration ==== |
||
+ | * Git levels: |
||
+ | |||
+ | /etc/gitconfig - global git config for any user |
||
+ | |||
+ | ~/.gitconfig -user specific |
||
+ | |||
+ | ~/repo/.git/config -repo specific |
||
+ | |||
+ | '''each level ovewrites prevous.''' |
||
+ | |||
+ | git config --global user.name "Your Name" |
||
+ | |||
+ | git config --global user.email you.email@domain |
||
+ | |||
+ | git config --global color.ui auto # If you like colours! |
||
+ | |||
+ | git config --global alias.co checkout |
||
+ | |||
+ | git config --global alias.st status |
||
+ | |||
+ | git config --global alias.ci commit |
||
+ | |||
+ | git config --global core.editor emacs |
||
+ | |||
+ | |||
+ | ==== Git basics ==== |
||
+ | |||
+ | <pre> |
||
+ | git init - create new local repo |
||
+ | |||
+ | git clone /path/to/repository - check out a repository |
||
+ | |||
+ | git clone https://github.com/ - clone repo from github |
||
+ | |||
+ | git add <filename> - add specified file |
||
+ | |||
+ | git add . - add all subdirectories and files recursivly |
||
+ | </pre> |
Revision as of 18:49, 18 August 2016
Contents
Git Hands-on
All of these exercises should be followed on naf-school03 using your school account
Note that lines beginning with a $ sign implies a shell command!
Exercise 1 (Configuration)
- $ mkdir -p ~/school/git
- $ cd ~/school/git
- Configure git
- $ git config --global user.name "Your Name"
- $ git config --global user.email you.email@domain
- $ cat ~/.gitconfig
- optional extras for config (and obviously editor is mutually exclusive)
- $ git config --global color.ui auto # If you like colours!
- $ git config --global alias.co checkout
- $ git config --global alias.st status
- $ git config --global alias.ci commit
- $ git config --global core.editor emacs # flame bait
- $ git config --global core.editor vim
Exercise 1 (Basics)
Let's commit some stuff to git...
- $ git init
- $ git status
- $ touch readme.txt
- $ git commit
- $ git add .
- $
- $ git clone git@naf-school04:gitlab
- $ cd gitlab
- $ git status
- $ vi ${USER}.txt
- write something
- $ git status # what is updated? Working tree, Index or Repository?
- $ git diff
- $ git diff HEAD
- $ git diff --cached
- $ git add ${USER}.txt
- $ git status
- $ git diff
- $ git diff HEAD
- $ git diff --cached
- $ git commit -m "Add user text file"
- $ git status
- $ git diff
- $ git diff HEAD
- $ git diff --cached
- $ git push origin master
- this might not work! Why?
- tip: what does “git pull --rebase” do?
- $ git checkout -b ${USER} master # specifying "master" here is just a good habit. Always beware of defaults.
- $ vi config.yaml
- Add a user to the list
- $ git add -p
- $ git commit -m "Adding ${USER} to users list"
- $ git push origin ${USER}
- $ git checkout master
- $ git merge ${USER}
- $ git push origin master
- What happens?
- $ git checkout -b newfeature_${USER} master
- $ vi config.yaml
- add a server
- commit the change (with a good message!)
- $ git log
- Oops! We mistyped the server, vi config.yaml again
- change the name of the server
- commit the change
- $ git rebase -i HEAD~2
- use “fixup” or “squash” on the fix (make sure you understand the difference)
- $ git log # examine the differences
Git cheat sheet
Git configuration
- Git levels:
/etc/gitconfig - global git config for any user
~/.gitconfig -user specific
~/repo/.git/config -repo specific
each level ovewrites prevous.
git config --global user.name "Your Name"
git config --global user.email you.email@domain
git config --global color.ui auto # If you like colours!
git config --global alias.co checkout
git config --global alias.st status
git config --global alias.ci commit
git config --global core.editor emacs
Git basics
git init - create new local repo git clone /path/to/repository - check out a repository git clone https://github.com/ - clone repo from github git add <filename> - add specified file git add . - add all subdirectories and files recursivly