際際滷

際際滷Share a Scribd company logo
Open Source Collaboration
   with Git and GitHub
      by Benjamin Young
     adapted from work by
        Nick Quaranto
whoami
 President of BigBlueHat
   a web manufacturing company
   we build web stuff
 We built BlueInk
    a content management system
 Building sites since the late 90's
    I remember Netscape 3
Ve rs io n Co ntro l
c o uld s a v e y o ur
        life .
Or a t le a s t y o ur
jo b/pro je c t/ide a /
    s a nity /g pa
The Basics
 Keep backup copies of files whenever
  you want
 Restore those copies quickly and easily
 Share the files and the change s with other
  developers
 Integrate their changes into your files
The Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHub
Directed Acyclic Graph
Git Internals: Blobs


                                                    main.c


457aef 93f f 7f f bb289f 7e1384f 900679eac f 044a
Git Internals: Trees
Git Internals: Commits
Git Internals: Commits
Giting Started
   mkdir new_proj          cd old_proj
   cd new_proj             git init
   git init                git add .
   ...do some work...      git commit
   git add .
   git commit
The Staging Area
What's changed?
git status
On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working
directory)
#
#   modified:      index.php
#
What's changed? (cont)
git diff
diff --git a/index.php b/index.php
index 9e7353c..1764d3e 100644
--- a/index.php
+++ b/index.php
@@ -24,4 +24,5 @@
 require_once 'webroot'.DIRECTORY_SEPARATOR.'index.php';
-?>
 No newline at end of file
+echo 'an example change';
+?>
Birds Eye View
 git log
 gitk
   a graphical view of your repository
 GitX
   Mac OS X app for doing the above
   also handy for commit review
   prettier than gitk
Git Internals: Branches



branchna
   me



 HEAD
Branching
Branching
 Another great reason to use Version
  Controlparticularly git
 Your first idea is never your best idea
 Branches give you the freedom to change
  things...whenever
Branching (cont)
 git branch experimental
   creates a branch named 'experimental'
 git branch
   shows a list of branches:
 git checkout experimental
   switch to the new branch
The Staging Area (cont)
 All that happened in the same directory
   sort of...
 Your version histories actually in the .git
  folder
 so, when you checkout a branch git
  changes all the files outside of .git to
  match that branches content
 git it?
Put it back together again
 git checkout master
 git merge experimental

 if all went well, then your done
 if not:

 git mergetool
 git commit -a
Git Internals: Remotes



branchna
   me
           remotes/server/na
                 me
 HEAD
Local vs. Remote
Multiple Workflows
Centralized
Integration Manager
Benevolent Dictator
Where to Share
The Basics of Open Source Collaboration With Git and GitHub
=
The Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHub
Other Hosting Options
 Public Only         Public and Private
   repo.or.cz          GitHub.com
   Gitorious.org       CodaSet.com
 Private Only
   Unfuddle.com
   codebasehq.com
How to Contribute
1.   Fork a repository at GitHub
2.   Clone and connect your local repository
3.   Write tests, implement functionality
4.   Commit your local changes
5.   Push your changes to your fork
6.   Make a pull request
7.   Profit!!
git log
 Kudos to Sc o tt Cha c o n who made
    http://git-scm.com
    http://whygitisbetterthanx.com
 And to Mic ha e l Ha rtl
    for Building the Insoshi Social Network
 Wikipedia too.

nick@quaran.to                 byoung@bigbluehat.com
http://litanyagainstfear.com   http://bigbluehat.com

More Related Content

The Basics of Open Source Collaboration With Git and GitHub

  • 1. Open Source Collaboration with Git and GitHub by Benjamin Young adapted from work by Nick Quaranto
  • 2. whoami President of BigBlueHat a web manufacturing company we build web stuff We built BlueInk a content management system Building sites since the late 90's I remember Netscape 3
  • 3. Ve rs io n Co ntro l c o uld s a v e y o ur life .
  • 4. Or a t le a s t y o ur jo b/pro je c t/ide a / s a nity /g pa
  • 5. The Basics Keep backup copies of files whenever you want Restore those copies quickly and easily Share the files and the change s with other developers Integrate their changes into your files
  • 9. Git Internals: Blobs main.c 457aef 93f f 7f f bb289f 7e1384f 900679eac f 044a
  • 13. Giting Started mkdir new_proj cd old_proj cd new_proj git init git init git add . ...do some work... git commit git add . git commit
  • 15. What's changed? git status On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: index.php #
  • 16. What's changed? (cont) git diff diff --git a/index.php b/index.php index 9e7353c..1764d3e 100644 --- a/index.php +++ b/index.php @@ -24,4 +24,5 @@ require_once 'webroot'.DIRECTORY_SEPARATOR.'index.php'; -?> No newline at end of file +echo 'an example change'; +?>
  • 17. Birds Eye View git log gitk a graphical view of your repository GitX Mac OS X app for doing the above also handy for commit review prettier than gitk
  • 20. Branching Another great reason to use Version Controlparticularly git Your first idea is never your best idea Branches give you the freedom to change things...whenever
  • 21. Branching (cont) git branch experimental creates a branch named 'experimental' git branch shows a list of branches: git checkout experimental switch to the new branch
  • 22. The Staging Area (cont) All that happened in the same directory sort of... Your version histories actually in the .git folder so, when you checkout a branch git changes all the files outside of .git to match that branches content git it?
  • 23. Put it back together again git checkout master git merge experimental if all went well, then your done if not: git mergetool git commit -a
  • 24. Git Internals: Remotes branchna me remotes/server/na me HEAD
  • 32. =
  • 38. Other Hosting Options Public Only Public and Private repo.or.cz GitHub.com Gitorious.org CodaSet.com Private Only Unfuddle.com codebasehq.com
  • 39. How to Contribute 1. Fork a repository at GitHub 2. Clone and connect your local repository 3. Write tests, implement functionality 4. Commit your local changes 5. Push your changes to your fork 6. Make a pull request 7. Profit!!
  • 40. git log Kudos to Sc o tt Cha c o n who made http://git-scm.com http://whygitisbetterthanx.com And to Mic ha e l Ha rtl for Building the Insoshi Social Network Wikipedia too. nick@quaran.to byoung@bigbluehat.com http://litanyagainstfear.com http://bigbluehat.com