Git With The Program: Introduction to Basic Git Concepts - Drupal Camp LA 2013

686 views

Published on

Aside from being the version control system that powers Drupal development, Git is the VCS of choice for most modern software development, at least on the web -- as well as a must-have skill for any Drupal developer seeing a job. (Lack of experience with Git is my number one frustration with developers I work with.)

But because of its distributed nature (i.e., every copy of the repository is complete unto itself and doesn't necessarily need an authoritative central system), Git presents conceptual challenges not only to beginners but to developers experienced with older forms of version control -- RCS, CVS, SVN, etc.

In this session, we'll look at the basic concepts behind Git, including:

Why I need version control even if I work alone in my closet and never see anyone else.
Who's in charge here?!: Understanding Distributed VCS
All hail the SHA
My repository, remote repositories
Pushing and Pulling

Finally we'll look at the vary basic tasks of cloning or initializing a repository and committing to it, then pushing your changes back to a server.

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

No Downloads
Views
Total views
686
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
8
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Git With The Program: Introduction to Basic Git Concepts - Drupal Camp LA 2013

  1. 1. GIT WITHTHE PROGRAM Drupal Camp LA 2013 Matthew Wrather Wrather Creative
  2. 2. ABOUT ME • Freelance Drupal Developer and Web Generalist since 1997 • Drupal since 4.6 • Most Definitely Available for Work! matt@wrathercreative.com (510) WRA-THER
  3. 3. SOURCES • A great talk by @merlyn himself, Randal Schwartz CC-BY-SA • OnVimeo at https://vimeo.com/35778382 • Slides at http://slidesha.re/z7nQrG • Pro Git by Scott Chacon CC-BY-NC-SA • Read for free at http://git-scm.com/book • And many more at http://lmgtfy.com/?q=git+tutorial
  4. 4. AGENDA 1. Why UseVersion Control 2. Git basic concepts 3. Demo Time for questions after each section.
  5. 5. DOESN’T USEVERSION CONTROL slworking on Flickr CC-BY-NC-SA
  6. 6. QUESTIONS?
  7. 7. WHAT IS GIT FOR? Git is for… • Tracks a tree of related files • Distributed • High Performance • Easy & Fast Branch/Merge • Good Data Integrity • Collaborative Git is not for… • Tracking unrelated files • Tracking File Metadata • Binary Files
  8. 8. WRAPYOUR MIND AROUND • Distributed:Your repository is complete unto itself. • Anyone can commit!* *To their own repo. • (Once you start fetching and pushing work, permissions come into play.) • There can still be a central, blessed repo. • Universal Public Identifiers: SHA1 hashes
  9. 9. OBJECTS IN GIT • Blobs (actual data) • Trees (directories of blobs or of other trees) • A commit, which is: • A tree • Zero or more parent commits • Metadata (commit message, name email, timestamp)
  10. 10. graphic from Pro Git by Scott Chacon CC-BY-NC-SA
  11. 11. WE NEEDTOTALK ABOUT COMMITMENT Do this Work Stage Commit here Filesystem Staging Area Repository (aka here) WorkingTree Index HEAD by writing code git add git commit Rinse and Repeat
  12. 12. graphic from Pro Git by Scott Chacon CC-BY-NC-SA BRANCHES
  13. 13. graphic from Pro Git by Scott Chacon CC-BY-NC-SA BRANCHES $ git commit
  14. 14. graphic from Pro Git by Scott Chacon CC-BY-NC-SA BRANCHES $ git branch testing
  15. 15. graphic from Pro Git by Scott Chacon CC-BY-NC-SA BRANCHES
  16. 16. graphic from Pro Git by Scott Chacon CC-BY-NC-SA BRANCHES $ git checkout testing
  17. 17. graphic from Pro Git by Scott Chacon CC-BY-NC-SA BRANCHES $ subl awesome.module $ git add awesome.module $ git commit -m ‘changed awesome module’
  18. 18. graphic from Pro Git by Scott Chacon CC-BY-NC-SA BRANCHES $ git checkout master
  19. 19. graphic from Pro Git by Scott Chacon CC-BY-NC-SA BRANCHES
  20. 20. graphic from Pro Git by Scott Chacon CC-BY-NC-SA MERGING
  21. 21. graphic from Pro Git by Scott Chacon CC-BY-NC-SA MERGING $ git checkout -b iss53 # shortcut for: $ # git branch iss53 $ # git checkout iss53
  22. 22. graphic from Pro Git by Scott Chacon CC-BY-NC-SA MERGING
  23. 23. graphic from Pro Git by Scott Chacon CC-BY-NC-SA MERGING
  24. 24. FAST FORWARD MERGE $ git checkout master $ git merge hotfix
  25. 25. graphic from Pro Git by Scott Chacon CC-BY-NC-SA FAST FORWARD MERGE
  26. 26. graphic from Pro Git by Scott Chacon CC-BY-NC-SA FAST FORWARD MERGE
  27. 27. graphic from Pro Git by Scott Chacon CC-BY-NC-SA FAST FORWARD MERGE $ git branch -d hotfix
  28. 28. graphic from Pro Git by Scott Chacon CC-BY-NC-SA RECURSIVE MERGE
  29. 29. graphic from Pro Git by Scott Chacon CC-BY-NC-SA RECURSIVE MERGE $ git checkout master $ git merge iss53
  30. 30. graphic from Pro Git by Scott Chacon CC-BY-NC-SA REBASING
  31. 31. graphic from Pro Git by Scott Chacon CC-BY-NC-SA REBASING
  32. 32. graphic from Pro Git by Scott Chacon CC-BY-NC-SA REBASING
  33. 33. graphic from Pro Git by Scott Chacon CC-BY-NC-SA REBASING $ git checkout experiment $ git rebase master
  34. 34. Thou shalt not rebase commits that you have pushed to a remote repository.
  35. 35. REMOTE REPOSITORIES • All these things that we’ve done so far happen in the privacy of our own computer and don’t affect anything else. • You can track what’s going on in other repositories by adding them as “remotes” git remote add <nickname> <remote-url> • When you copy a repo using the git clone command, you’ll automatically have a remote called origin
  36. 36. REMOTE REPOSITORIES • When you’ve done working, you can “push” your work up to a remote repository git push <remote-nickname> <branch> git push origin master • But if someone else has done work and pushed it to the remote repo, git won’t let you overwrite.
  37. 37. REMOTE REPOSITORIES • To find out what’s on the server, you can “fetch” from a remote repository git fetch <remote-nickname> git fetch origin • Remote branches will be tracked locally, prefixed with the remote nickname.The master branch on origin becomes origin/master locally.
  38. 38. REMOTE REPOSITORIES $ git push origin master [git error message] $ git fetch origin $ git merge origin/master $ git push master [HUGE SUCCESS!]
  39. 39. QUESTIONS?
  40. 40. DEMO
  41. 41. THANKYOU! Matthew Wrather • @mwrather matt@wrathercreative.com • (510) WRA-THER

×