Your SlideShare is downloading. ×
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials

2,235
views

Published on

http://guide13.jazoon.com/#/submissions/156

http://guide13.jazoon.com/#/submissions/156


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,235
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Get IT right Git Essentials Bartosz Majsak (@majson), Thomas Hug (@gizmoo360) http://ctp.com http://github.com/ctpconsulting 1 © 2013 Cambridge Technology Partners Copyright © 2013 Cambridge Technology Partners All Rights Reserved. Cambridge, its logo, and Get IT Right are trademarks of Cambridge Technology Partners.
  • 2. About Us  Bartosz Majsak  Java Developer by day  Open source junkie by night (Arquillian core team member)  Conference speaker by passion (Devoxx, Jazoon ...)  Thomas Hug  With Cambridge Technology Partners since 2002  Java Developer, TTL, Solution Architect  Apache Committer, OSS contributor and aficionado 2 © 2013 Cambridge Technology Partners 10/25/2013
  • 3. Why do we recommend Linux? 3 © 2013 Cambridge Technology Partners 10/25/2013
  • 4. Git a British slang term meaning a contemptible person, a bastard. 4 © 2013 Cambridge Technology Partners 10/25/2013
  • 5. Git History   VCS of Linux Kernel  5 Founded 2005 as a replacement of BitKeeper …not just Linux anymore © 2013 Cambridge Technology Partners 10/25/2013
  • 6. Git Concepts   Performance and Efficiency  6 No Central Server – Distributed VCS Robustness © 2013 Cambridge Technology Partners 10/25/2013
  • 7. Disclaimer when we say repository we actually mean local repository (no network connectivity) 7 © 2013 Cambridge Technology Partners 10/25/2013
  • 8. Installing and Configuring Git © 2013 Cambridge Technology Partners
  • 9. Installation    msysgit cygwin Atlassian SourceTree  XCode Homebrew MacPorts  Package Manager   9 © 2013 Cambridge Technology Partners 10/25/2013
  • 10. Command line essentials Playground Objectives: getting familiar with essential commands and making your life easier         10 touch cat / less mkdir ls tree cp / rm / mv nano history / ctrl+shift+r © 2013 Cambridge Technology Partners 10/25/2013
  • 11. User Identity  Your contact details $ git config --global user.name “Bruce Wayne” $ git config --global user.email “batman@gotham.com” $ less ~/.gitconfig  SSH Key generation $ ssh-keygen -t *dsa -C batman@gotham.com *Using SHA-2 underneath. Approved by NSA 11 © 2013 Cambridge Technology Partners 10/25/2013
  • 12. Presets  Color output $ git config --global color.ui auto  Aliases. Useful for stuff impossible to remember… $ git config --global alias.showlog "log --color -graph --pretty=format:'%Cred%h%Creset %C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" Three levels of configuration: --local (default, per repo) --global (per user) --system (machine) 10/25/2013 12 © 2013 Cambridge Technology Partners
  • 13. Reference Material  Git References  http://git-scm.com/ - official Git Home  http://git-scm.com/book - Pro Git (Apress) online version  http://git-scm.com/docs - Reference Documentation  https://www.atlassian.com/git/tutorial - Git Tutorial  http://gitready.com/ - Git Tutorial  Workflows  https://www.atlassian.com/git/workflows - Tutorial on common Git workflows  http://yakiloo.com/getting-started-git-flow/ - About Git Flow (advanced topic)  Getting Help  http://stackoverflow.com/ - All things programming  https://help.github.com/ - Git Recipies 13 © 2013 Cambridge Technology Partners 10/25/2013
  • 14. First Repository © 2013 Cambridge Technology Partners
  • 15. Creating a Repository $ $ $ $ mkdir myrepo cd myrepo git init git ls -la git init Do this in one swoop with $ git init myrepo 15 © 2013 Cambridge Technology Partners 10/25/2013
  • 16. Adding Files $ $ $ $ touch index.html git status git add index.html git status git status git add git add works also with patterns: $ git add ‘*.java’ $ git add . $ git add folder/ You can even stage parts of a file $ git add –p|-i Stage all changes (including deleted files) in the working directory with $ git add -A . 16 © 2013 Cambridge Technology Partners 10/25/2013
  • 17. Committing Files $ git commit git commit $ git status $ git log --oneline --decorate Commit directly with commit message: $ git commit -m ‘Been there, done that’ $ git commit -am ‘Add also modified files directly’ Need a different commit editor? export EDITOR=vim 17 © 2013 Cambridge Technology Partners
  • 18. Three Stage Thinking add commit checkout Working Directory 18 Staging Area © 2013 Cambridge Technology Partners Repository History 10/25/2013
  • 19. Deleting and ignoring Files $ $ $ $ $ $ $ touch test1.log test2.log git add test1.log git commit vim .gitignore git status git rm test1.log git commit A shell script for easily accessing - gitignore boilerplates https://github.com/simonwhitaker/gitignore-boilerplates $ gibo Java Eclipse >> .gitignore 19 © 2013 Cambridge Technology Partners .gitignore git rm
  • 20. How does my repo look like? git log gives you and overview of your repository structure. $ git log $ git log -p $ git log --oneline --decorate $ git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit 20 © 2013 Cambridge Technology Partners 10/25/2013
  • 21. The Git File Workflow ignore add edit add commit rm ignored 21 untracked unmodified © 2013 Cambridge Technology Partners modified staged 10/25/2013
  • 22. Branching and Merging © 2013 Cambridge Technology Partners
  • 23. Branching $ git branch mybranch $ git branch $ git checkout mybranch Delete the branch with $ git branch -d mybranch $ git branch -D mybranch Create a branch and check it out in one swoop $ git checkout -b mybranch 23 © 2013 Cambridge Technology Partners git branch # if unmerged
  • 24. Time for some serious work Objectives: Getting familiar with branching and tagging.     Create new branch and modify repository Switch between branches Delete branch Tag commits $ git branch $ git checkout $ git tag 24 © 2013 Cambridge Technology Partners 10/25/2013
  • 25. I’m not done yet $ $ $ … $ $ $ git status git stash git status # staged stuff git stash list git stash apply [--index] git stash drop stash@{0} Apply and remove stash in one swoop $ git stash pop 25 © 2013 Cambridge Technology Partners git stash
  • 26. Merging checkout master branch mybranch showlog branch Feature Fast-forward is default $ git merge --no-ff git merge Feature git git git git Feature $ $ $ $ Deactivating fast-forward merges per branch $ git config branch.master.mergeoptions 26 © 2013 Cambridge Technology Partners "--no-ff"
  • 27. Diffs $ git diff mybranch master git diff Diff works also on the branch history $ git diff # unstaged $ git diff HEAD^^ HEAD # from to $ git diff hash1...hash2 # from to 27 © 2013 Cambridge Technology Partners
  • 28. Rebasing $ git checkout master $ git rebase mybranch Rewriting history: Interactive rebase last four commits $ git rebase --i HEAD~4 28 © 2013 Cambridge Technology Partners git rebase
  • 29. All your base are belong to us Objectives: Learn how rebase works.  Make changes on selected branch and rebase it with master $ git rebase <BRANCH> 29 © 2013 Cambridge Technology Partners 10/25/2013
  • 30. Going Remote © 2013 Cambridge Technology Partners
  • 31. Cloning Repositories $ git clone [#remote] Clone into a specific or existing (empty) folder $ git clone [#remote] myclonedrepo 31 © 2013 Cambridge Technology Partners git clone
  • 32. Git Protocols  ssh / git: Securely connect to remote machines git clone git@github.com:ctpconsulting/jazoon-git-workshops.git  HTTPS: Firewall friendly git clone https://github.com/ctpconsulting/jazoon-git-workshops.git  File – simple. Can be used with e.g. a shared drive git clone file:///home/thug/repo/chopen-workshop-git Cloning directly without the file protocol will use hard links $ git clone /home/thug/repo/jazoon-git-workshops 32 © 2013 Cambridge Technology Partners 10/25/2013
  • 33. Remotes $ $ $ $ $ git init myremoterepo git remote cd myremoterepo … # commit something git remote add origin [#remote] git remote -v Git is distributed – you can have more than one remote! $ git remote add https-origin https://myrepo.com/repo.git 33 © 2013 Cambridge Technology Partners
  • 34. Submitting Changes $ git push -u origin master $ … $ git push Forced push $ git push --force By default, Git always tries to push all matching branches. Configuration to push only current to upstream: $ git config push.default upstream 34 © 2013 Cambridge Technology Partners git push
  • 35. Retrieving Changes $ git fetch $ git merge origin/master git fetch git pull Or short-hand $ git pull Resolution strategy for merge conflicts $ git pull -Xours $ git pull -Xtheirs 35 © 2013 Cambridge Technology Partners
  • 36. Retrieving Changes $ git pull --rebase During a regular daily workflow where several team members sync a single branch often, the timeline gets polluted with unnecessary micro-merges on a regular git pull. Rebasing ensures that the commits are always re-applied so that the history stays linear. Make git pull on master always use rebase $ git config branch.master.rebase true Or make it a default for every tracking branch strategy $ git config --global branch.autosetuprebase always 36 © 2013 Cambridge Technology Partners
  • 37. 37 © 2013 Cambridge Technology Partners
  • 38. 38 © 2013 Cambridge Technology Partners
  • 39. Get IT right Thank you! 39 © 2013 Cambridge Technology Partners
  • 40. Credits  40 Icons provided by Icons8: http://icons8.com/ © 2013 Cambridge Technology Partners 10/25/2013