Difference between revisions of "Githandson"

From Gridkaschool
Line 10: Line 10:
 
* cat ~/.gitconfig
 
* cat ~/.gitconfig
   
* optional extras
+
* optional extras for config (and obviously editor is mutually exclusive)
 
** git config --global color.ui auto # If you like colours!
 
** git config --global color.ui auto # If you like colours!
 
** git config --global alias.co checkout
 
** git config --global alias.co checkout
Line 16: Line 16:
 
** git config --global alias.ci commit
 
** git config --global alias.ci commit
 
** git config --global core.editor emacs # flame bait
 
** git config --global core.editor emacs # flame bait
** git config --global core.edit vim
+
** git config --global core.editor vim
   
 
* git clone gitolite3@naf-school02:gitlab
 
* git clone gitolite3@naf-school02:gitlab
Line 40: Line 40:
 
** this might not work! Why?
 
** this might not work! Why?
 
** tip: what does “git pull --rebase” do?
 
** 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

Revision as of 10:04, 3 September 2014

Git Hands-on

All of these exercises should be followed on naf-school01 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-school02: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