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

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