Githandson

From Gridkaschool
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Git Hands-on

All of these exercises should be followed on naf-school03 using your school account

  • 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 gitolite3@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 feature_${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 feature_${USER}
  • git checkout master
  • git merge feature_${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