Githandson

From Gridkaschool
Revision as of 10:08, 8 September 2015 by BenJones (talk | contribs) (Git Hands-on)

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!

  • $ 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
  • $ git clone git@naf-school04:gitlab
  • $ cd puppet
  • $ 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