Git a starter kit

1,052 views

Published on

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

  • Be the first to like this

No Downloads
Views
Total views
1,052
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
36
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Git a starter kit

  1. 1. Git: a starter kit--++ --++ Boubacar Diallo, Kareea. --++ --++ --++ --++ --++ --++ --++ --++ --
  2. 2. --++ Menu --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ Appetizer Who knows git? Who uses git? Main dish Basic git commands Dessert Questions & Answers
  3. 3. What isWhat is What is What is What is Git What is
  4. 4. --++ Not CVS or SVN --++ --++ --++ --++ --++ --++ --++ --++ --++
  5. 5. --++ Distributed RCS --++ --++ --++ --++ --++ --++ --++ --++ --++
  6. 6. --++ What is git? --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ Simple Fast
  7. 7. --++ Getting git --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ Mac: $ brew install git Linux: $ apt-get install git-core Windows: msysgit
  8. 8. --++ Setup --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ $ git config --global user.name "Boubacar Diallo" $ git config --global user.email "boubacar@kareea.com" $ cat ~/.gitconfig
  9. 9. 152W00T, LOL, OMG, HAXX W00T, LOL, OMG, HAXX Commands
  10. 10.
  11. 11.
  12. 12. --++ Basic Usage --++ --++ --++ --++ --++ --++ --++ --++ --++ --++• Clone existing depot (git clone)• Initialize git depot (git init)• Add a file (git add)• Commit changes (git commit)• See logs (git log)• Remove a file (git rm)• Jump to a commit (git checkout)
  13. 13. --++ Clone existing depot --++ --++ --++ --++ --++ --++ --++ --++ $ git clone <url> $ git clone git@github.com:username/project.git Create local depot Fetch remote master branch with commit history Save it as local master branch
  14. 14. --++ Make a new project --++ --++ --++ --++ --++ --++ --++ --++ $ cd path/to/repos $ mkdir project $ cd project
  15. 15. --++ Initialize git depot --++ --++ --++ --++ --++ --++ --++ --++ --++ $ ls -al # dir is empty $ git init # initialize git repo $ ls -al # new .git dir
  16. 16. --++ Working directory --++ --++ --++ --++ --++ --++ --++ --++ --++ Holds current checkout of files you are working on
  17. 17. --++ Index zone --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ Index is used as a staging area between your working dir and your repository
  18. 18. --++ Add a file --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ Start coding/adding files $ echo "Please read me" > README $ echo "Learn git now!" > TODO
  19. 19. --++ Add a file --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ Files are added into a buffer zone (index) Content of this zone is included in the next commit Now git will track the changes made to these files
  20. 20. --++ Show changes --++ --++ --++ --++ --++ --++ --++ --++ --++ Show the status of index and working dir $ git status # files are untracked $ git add README # add content to index $ git add TODO # add content to index $ git status # changes ready to be commited
  21. 21. --++ Show changes --++ --++ --++ --++ --++ --++ --++ --++ --++ Index now contains working dir content
  22. 22. --++ Commit changes --++ --++ --++ --++ --++ --++ --++ --++ --++ A commit is a snapshot taken from the index at some point in time
  23. 23. --++ Commit changes --++ --++ --++ --++ --++ --++ --++ --++ --++ Saves the contents of index to the repo Commit is inserted in the history of the branch Each commit has an ID (SHA1 hash)
  24. 24. --++ Commit changes --++ --++ --++ --++ --++ --++ --++ --++ --++ $ git commit -m “First commit” # First commit Update files $ echo "Try to cook" > TODO $ echo "Once upon a time" > README
  25. 25. --++ Commit changes --++ --++ --++ --++ --++ --++ --++ --++ --++ $ git status # Changes not staged for commit TODO + README $ git add TODO # Changes to be commited TODO $ git status # Changes not staged for commit $ git commit -m "Update TODO file" $ git status # Changes not staged for commit (README)
  26. 26. --++ Print log commit --++ --++ --++ --++ --++ --++ --++ --++ --++ $ git log Print log of commits of current branch Gives hashes, authors, descriptions, dates $ git log --pretty
  27. 27. --++ Remove a file --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ $ git rm <file> Delete a file from the current directory The file is no longer tracked by git Next commit will contain instructions to remove the file $ git rm TODO
  28. 28. --++ Jump to a commit --++ --++ --++ --++ --++ --++ --++ --++ -- $ git checkout <commit ID> Allows you to change the status of working directory Files can be reverted to a previous version
  29. 29. --++ Jump to a commit --++ --++ --++ --++ --++ --++ --++ --++ -- $ cat README $ git checkout bb788e7e5d2059... $ cat README
  30. 30. --++ Add/commit workflow --++ --++ --++ --++ --++ --++ --++ --
  31. 31. --++ Intermediate Usage --++ --++ --++ --++ --++ --++ --++ --++ --• Create branch (git branch branch_name)• Put aside temporary changes (git stash)• Merge branches (git merge)• Push commits (git push)• Pull commit (git pull)
  32. 32. --++ Create a branch --++ --++ --++ --++ --++ --++ --++ --++ --++ -- $ git branch # List branches $ git branch new_functionnality Create branch that derives from current branch Useful when developing a new feature $ git checkout new_functionnality $ git branch -D new_functionnality # Delete branch
  33. 33. --++ Put aside changes --++ --++ --++ --++ --++ --++ --++ --++ -- Save temporary changes from index and working dir $ git branch # branch new_functionnality $ git status # Uncommited changes $ git checkout master # Error $ git stash # Saves working dir and index
  34. 34. --++ Put aside changes --++ --++ --++ --++ --++ --++ --++ --++ $ git checkout master # Switch to master $ git stash list $ git stash show $ git stash (apply || drop)
  35. 35. --++ Merge branches --++ --++ --++ --++ --++ --++ --++ --++ --++ -- Merge a branch with the current branch $ git checkout -b new_functionnality $ echo "Take her phone" > TODO $ echo "How to seduce women" > README $ echo "Stop thinking too much" > new_file
  36. 36. --++ Merge branches --++ --++ --++ --++ --++ --++ --++ --++ --++ -- $ git add new_file $ git commit -m "Testing new functionnality" $ git checkout master $ cat new_file $ git merge new_functionnality
  37. 37. --++ Pull commits --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ -- $ git pull <remote_depot> <remote_branch> Download commit history of a remote branch (git fetch) Performs merge with current branch (git merge) Can generate conflicts
  38. 38. --++ Push commits --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ Sends commits to the history of a remote branch of a remote repository (help.github.com) $ git remote add <name> <url> $ git remote add origin git@github.com:username/ hello_world.git $ git push <remote_depot> <remote_branch> $ git push origin master
  39. 39. --++ Thank you! --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ Any Question? Formation rapide en vidéo @BoubacarDiallo @Tutorys
  40. 40. --++ Collaborative Working Process --++ --++ --++ --++ --++ Small commits with meaningful commit message Test new functionnalities in separate branches Merge branch into master All tests should always pass on branch master Push to staging when OK Push to production
  41. 41. --++ Resources --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ http://www.erlang-factory.com/upload/presentations/244/ ErlangFactroySFBay2010-TomPreston-Werner.pdf http://book.git-scm.com/ http://sixrevisions.com/resources/git-tutorials-beginners/ http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html http://www.slideshare.net/yannsionneau/introduction- git-8450451
  42. 42. --++ Videos --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ --++ Tom Preston-Werner - Mastering Git Basics http://vimeo.com/ 17118008 "Getting Git" by Scott Chacon http://vimeo.com/14629850 Linus Torvalds on Git http://www.youtube.com/watch? v=4XpnKHJAok8 Randal Schwartz on Git http://www.youtube.com/watch? v=8dhZ9BXQgc4 Git Tutorial Talk http://excess.org/article/2008/07/ogre-git- tutorial/

×