0
SOURCE CONTROL  MANAGEMENT    With Git
BUT WAIT!
TEXT EDITOR AND SHELLSome Editors                      The Shell  Sublime Text 2                      Git Bash   Komodo Ed...
IMPORTANT PRE-CLASS LINKShttp://   bit.ly/gdiscm
MARKDOWN QUICK GUIDE# Level 1 Header (h1)                       This is *italic*. (em)## Level 2 Header (h2)              ...
TRADITIONAL INTRO    begins here…
ABOUT MEOwen WinklerTwitter: @ringmasterEmail: ringmaster@midnightcircus.comGitHub: https://github.com/ringmaster
TODAY’S PLAN           1. Basics of SCM          2. Starting a Project3. Branching and Experimentation       4. GitHub and...
WHAT IS SCM?aka “Revision Control”
THE CURRENT STATE OF THINGS
WHAT IS SCM?      Revision control, also known as version control and source control is the management ofchanges to docume...
ADVANTAGES OF SCM   • Resilience• Collaboration   • Efficiency• Accountability  • Integration
VOCABULARYWorking Copy                 Remote Production                 Pull/Push Repository                   Merge    S...
THE GIT PROCESS
THE GIT PROCESS
THE GIT PROCESS
THE GIT PROCESS
THE GIT PROCESS
SHELL BASICSThe Bare Minimum
COMMANDS YOU SHOULD KNOWls              List the contents of a directoryls -la          List ALL the contents of a directo...
OTHER USEFUL COMMANDS[Ctrl]+R           Search for a previously used commandhistory            List the last 100 or so com...
LET’S MAKE A FILEStep 1                                  Step 2•   Change to the user directory        • Find the director...
HERE COMES THE FUN PART       Starting with git
CENTRALIZEDVERSION CONTROL     Some    Central    Server     My   Computer
DISTRIBUTEDVERSION CONTROL   My Computer
CREATE A REPOConfigure Git Global Settings• Set your git username        git config --global user.name "github-user-name"•...
GIT STATUSFiles can have (in general) 4 states:           • Untracked             • Tracked            • Changed          ...
GIT ADD/STAGE                We need a way to stage things to be committed.                  Committing is an “all at once...
COMMIT                       Commit changes to the repo.               All staged changes are committed at once.          ...
LET’S MAKE A CHANGEProcedure• Get neighbor’s name and why they’re here• Add neighbor’s name to your editor (It’s still ope...
INTERLUDEIsn’t this exciting?
GIT STASH                     Stash is the coolest feature ever.           Stash allows you to make other changes mid-chan...
INTERLUDEIsn’t this exciting?
GIT DIFF                     For when you ask yourself,          Hey, wait a minute, what did I change? ?Procedure• Use Di...
GIT LOG    Use the log to see what you and others have been adding to your repo.Procedure• Use git log to see all changes ...
INTERLUDEIsn’t this exciting?
GIT REBASE                 This is the “What the heck?” git command. Rebase allows you to combine a bunch of commits into ...
INTERLUDEIsn’t this exciting?
BRANCHING                  Branching allows you to get experimental.  You can leave the state of master alone, and work so...
ADD THAT LIST Asterisks aplenty
SWITCHING BETWEEN                               BRANCHES                   Branches track their own change history.       ...
REINTEGRATING BRANCHES  If the changes in a branch need to be copied into the master branch, they                         ...
FEATURE BRANCHESDevelopment teams use Feature Branches for different purposes.
TAGGING  Tagging marks a specific commit with a name, and optionally annotates it.Procedure• Use git tag to create a light...
GITHUBA central git website
SSH KEYPAIRS SSH is the method Github uses to securely exchange data. Public Keys are the means that Github uses to authen...
CREATE A REPO   On Github!
INITIALIZE A REPO FROM                         SCRATCH ON GITHUB             Using the instructions to get a repo from Git...
GIT PUSH          After you’ve completed a commit that you want to share,                push your commits to the remote r...
GIT PULL  When you want to update your working copy from the remote repository,                              use git pull....
ADDING A NEW REMOTELet’s try creating a new repo on Github for our contributors.txt file repo, and                        ...
CLONING EXISTING REPOS     This is the fun part
CLONING When there is an existing repo on Github that you would like to work on as                        your working cop...
CONFLICT RESOLUTION   No, this is the fun part
HERE WE GO…https://github.com/ringmaster/gdiscm
OWEN’S IMMUTABLE                            LAWS OF SCM• If you run blame, you’re most likely to find that you’re the one ...
RESOURCEShttp://git-scm.com/about
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Source control management
Upcoming SlideShare
Loading in...5
×

Source control management

961

Published on

Source Control Management with

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

  • Be the first to like this

No Downloads
Views
Total Views
961
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Source control management"

  1. 1. SOURCE CONTROL MANAGEMENT With Git
  2. 2. BUT WAIT!
  3. 3. TEXT EDITOR AND SHELLSome Editors The Shell Sublime Text 2 Git Bash Komodo Edit Terminal Coda (Mac) sshText Wrangler (Mac) PSPad (Win) TextEdit (Win)
  4. 4. IMPORTANT PRE-CLASS LINKShttp:// bit.ly/gdiscm
  5. 5. MARKDOWN QUICK GUIDE# Level 1 Header (h1) This is *italic*. (em)## Level 2 Header (h2) This is **bold**. (strong)##### Level 5 Header (h5) This links toLine breaks must have [Google](http://google.com)two spaces at the end of the line. * First ItemParagraphs are separated by a blank line. * Second Item * Third Item Indent code blocks with four spaces!
  6. 6. TRADITIONAL INTRO begins here…
  7. 7. ABOUT MEOwen WinklerTwitter: @ringmasterEmail: ringmaster@midnightcircus.comGitHub: https://github.com/ringmaster
  8. 8. TODAY’S PLAN 1. Basics of SCM 2. Starting a Project3. Branching and Experimentation 4. GitHub and Remotes 5. Conflict Resolution 6. (Maybe) Using Submodules
  9. 9. WHAT IS SCM?aka “Revision Control”
  10. 10. THE CURRENT STATE OF THINGS
  11. 11. WHAT IS SCM? Revision control, also known as version control and source control is the management ofchanges to documents, computer programs, large web sites, and other collections of information. ~ Wikipedia
  12. 12. ADVANTAGES OF SCM • Resilience• Collaboration • Efficiency• Accountability • Integration
  13. 13. VOCABULARYWorking Copy Remote Production Pull/Push Repository Merge Stage Conflict Commit Resolve Revert Hash Head Branch Master Tag
  14. 14. THE GIT PROCESS
  15. 15. THE GIT PROCESS
  16. 16. THE GIT PROCESS
  17. 17. THE GIT PROCESS
  18. 18. THE GIT PROCESS
  19. 19. SHELL BASICSThe Bare Minimum
  20. 20. COMMANDS YOU SHOULD KNOWls List the contents of a directoryls -la List ALL the contents of a directory (hidden files, times, sizes)cd xx Change to the directory “xx”cd .. Change to the directory above this onecd ~ Change to your home directorycd / Change to the directory at the root of your computermkdir Make a directorypwd -P Show the full path of the current directory[letter][tab] Autocomplete or show all possibilities[up-arrow] Use the last command in your history
  21. 21. OTHER USEFUL COMMANDS[Ctrl]+R Search for a previously used commandhistory List the last 100 or so commands you usedalias l="ls -la" Assign the command “l” to do “ls -la”mv xx yy Rename/move the file “xx” as “yy”rm xx Delete the file named “xx”rmdir xx Delete the empty directory named “xx”
  22. 22. LET’S MAKE A FILEStep 1 Step 2• Change to the user directory • Find the directory you created in• Make a directory for this class Finder/Explorer• Change to the class directory • Create a file called “contributors.txt”• Create a directory called “names” • Edit that file in your editor• Change to that directory • Add your name to the file Do not create the directory using Finder/Explorer/your editor!
  23. 23. HERE COMES THE FUN PART Starting with git
  24. 24. CENTRALIZEDVERSION CONTROL Some Central Server My Computer
  25. 25. DISTRIBUTEDVERSION CONTROL My Computer
  26. 26. CREATE A REPOConfigure Git Global Settings• Set your git username git config --global user.name "github-user-name"• Set your git email address git config --global user.email "github-email“• Set your git editor Mac: git config --global core.editor "nano" Windows: Use GitPadProcedure• Change to the working directory• Initialize the repo git init
  27. 27. GIT STATUSFiles can have (in general) 4 states: • Untracked • Tracked • Changed • Staged
  28. 28. GIT ADD/STAGE We need a way to stage things to be committed. Committing is an “all at once” action.Procedure• Add the contributors.txt file to stage it. git add contributors.txt• Check the status of the working directory. git status
  29. 29. COMMIT Commit changes to the repo. All staged changes are committed at once. Every commit is stored in the repo with a “hash”.Procedure• Commit all staged changes git commit
  30. 30. LET’S MAKE A CHANGEProcedure• Get neighbor’s name and why they’re here• Add neighbor’s name to your editor (It’s still open, right?)• Save the file with the added name• Check the status of your working directory git status• Add the file to be staged git add contributors.txt• commit the changes to your repo git commit
  31. 31. INTERLUDEIsn’t this exciting?
  32. 32. GIT STASH Stash is the coolest feature ever. Stash allows you to make other changes mid-change.Procedure• While you still have changes… DO NOT COMMIT!• Instead, stash your changes git stash• Then make your change, add, and commit as normal git add; git commit• Then pop your change off the stash git stash pop
  33. 33. INTERLUDEIsn’t this exciting?
  34. 34. GIT DIFF For when you ask yourself, Hey, wait a minute, what did I change? ?Procedure• Use Diff to see what is currently changed, but not yet staged git diff• Use Diff to see what is staged, but not yet committed git diff –cached• Use Diff to see the differences between your working copy and the last commit git diff HEAD
  35. 35. GIT LOG Use the log to see what you and others have been adding to your repo.Procedure• Use git log to see all changes in your current branch git log• Use --oneline to see each change in the log on one line git log –oneline• Use the hashes shown in the log to get the diff between two commits git diff
  36. 36. INTERLUDEIsn’t this exciting?
  37. 37. GIT REBASE This is the “What the heck?” git command. Rebase allows you to combine a bunch of commits into one that makes you look less like a freakish commit-crazy idiot.Procedure• Use rebase to interactively select from the last 5 small commits to combine into one big commit git rebase –I HEAD~5
  38. 38. INTERLUDEIsn’t this exciting?
  39. 39. BRANCHING Branching allows you to get experimental. You can leave the state of master alone, and work solely on your branch.Process• Create a new branch git branch markdownlist• Checkout the branch you want to work on git checkout markdownlist• OR Create a new branch and switch to using it all in one step git checkout -b markdownlist• Then list the branches that are available git branch git branch -v
  40. 40. ADD THAT LIST Asterisks aplenty
  41. 41. SWITCHING BETWEEN BRANCHES Branches track their own change history. Switching between branches changes only the unmodified, tracked files in your working copy.Procedure• Check with branch you are on git status• Checkout the master branch git checkout master• Verify that you’re on the master branch git status
  42. 42. REINTEGRATING BRANCHES If the changes in a branch need to be copied into the master branch, they should be merged. Merging is usually a scary word.Procedure• Checkout the branch that the new code should be moved to git checkout master• Merge the branch into the current branch git merge markdownlist
  43. 43. FEATURE BRANCHESDevelopment teams use Feature Branches for different purposes.
  44. 44. TAGGING Tagging marks a specific commit with a name, and optionally annotates it.Procedure• Use git tag to create a lightweight tag of the current branch at HEAD git tag version1• OR, Use the -a flag to annotate the tag git tag -a version 1 -m "My message"• Use git show to see the commit of the tag git show version1
  45. 45. GITHUBA central git website
  46. 46. SSH KEYPAIRS SSH is the method Github uses to securely exchange data. Public Keys are the means that Github uses to authenticate.We must create a key pair to authenticate ourselves to Github.
  47. 47. CREATE A REPO On Github!
  48. 48. INITIALIZE A REPO FROM SCRATCH ON GITHUB Using the instructions to get a repo from Github.Procedure• Create the repo on Github• Follow the instructions to create an empty repo git init; git add; git commit• Connect the repo to Github git remote add origin git@github.com:ringmaster/scm.git• Push the repo to Github git push –u origin master
  49. 49. GIT PUSH After you’ve completed a commit that you want to share, push your commits to the remote repository.Procedure• Finalize any commits (modified or untracked files won’t be pushed!)• Execute git push on your repo git push origin master
  50. 50. GIT PULL When you want to update your working copy from the remote repository, use git pull.Procedure• Commit or stash any changes (git won’t let you pull over modified files!)• Execute git pull on your repo git pull origin master
  51. 51. ADDING A NEW REMOTELet’s try creating a new repo on Github for our contributors.txt file repo, and then pushing to that remote.Procedure• Create a new repo on Github• Add the repo URL (ssh) as a remote on the existing working copy git remote add origin git@github.com:ringmaster/contrib.git• Push the repo to Github git push –u origin master
  52. 52. CLONING EXISTING REPOS This is the fun part
  53. 53. CLONING When there is an existing repo on Github that you would like to work on as your working copy, you clone it.Procedure• Copy the git URL from the Github page (use the ssh version)• Execute git clone where you want to create your new working copy git clone git@github.com:ringmaster/fob.git
  54. 54. CONFLICT RESOLUTION No, this is the fun part
  55. 55. HERE WE GO…https://github.com/ringmaster/gdiscm
  56. 56. OWEN’S IMMUTABLE LAWS OF SCM• If you run blame, you’re most likely to find that you’re the one at fault. • Commit whenever you feel like you’ve reached a point that you’re complete, even (especially) if you might immediately rewrite the whole thing.
  57. 57. RESOURCEShttp://git-scm.com/about
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×