• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Git and Github
 

Git and Github

on

  • 29,551 views

 

Statistics

Views

Total Views
29,551
Views on SlideShare
16,919
Embed Views
12,632

Actions

Likes
100
Downloads
982
Comments
4

27 Embeds 12,632

http://ihower.tw 12188
http://endroid.blogspot.com 193
http://10.242.112.2:61004 45
http://rcaw.blogspot.com 37
http://blog.xuite.net 28
http://10.242.112.2 24
http://qic-web:61004 21
http://rcaw.blogspot.tw 16
http://static.slidesharecdn.com 13
http://webcache.googleusercontent.com 13
http://ihower.tw. 8
http://endroid.blogspot.tw 6
http://www.techgig.com 6
http://feeds.feedburner.com 6
http://xianguo.com 5
http://imandalarthank.blogspot.com 4
http://reader.youdao.com 4
http://s.deeeki.com 3
http://www.hksilicon.com 2
http://www.m.techgig.com 2
http://chinaonrails.com 2
http://twitter.com 1
http://endroid.blogspot.com.au 1
https://twitter.com 1
http://paper.li 1
http://www.linkedin.com 1
http://translate.googleusercontent.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

14 of 4 previous next Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Git and Github Git and Github Presentation Transcript

    • Git and GitHub ihower@gmail.com 2011/3 CC BY-NC-SA 3.0 Pro Git
    • ?• a.k.a. ihower • http://ihower.tw • http://twitter.com/ihower• Ruby on Rails Developer since 2006• The organizer of Ruby Taiwan Community • http://ruby.tw 2
    • Agenda‧1. DVCS‧2. Git‧3. Git‧4. Github‧5. Git 3
    • ‧2002 ( copy )‧2005 SubVersion‧2007 SVK‧2008 Git ( SVN push/pull)‧2009 Git ( master feature branches)‧2011 Git ( git flow topic branch rebase) 4
    • 1. DVCS ? 5
    • Version Control System‧ repository‧‧‧Branch( )‧Tag( ) 6
    • Local VCScopy paste , rcs 7
    • Local VCScopy paste , rcs 7
    • Centralized VCS CVS, Subversion, Perforce 8
    • Centralized VCS CVS, Subversion, Perforce 1. 2. Single point of failure 8
    • Distributed VCS Git, Mercurial(Hg), Bazaar 9
    • Distributed VCS Git, Mercurial(Hg), Bazaar workflows ! 9
    • Local development‧ CSV commit history log‧ CSV commit history log 10
    • 2. Git ? 11
    • Git‧ Linux Torvalds (Linux creator)‧ Linux Kernel‧2005/4 2005/6 Linix Kernel 2005/12 1.0 12
    • Git?‧Git ‧Qt‧Linux Kernel ‧Ruby on Rails‧Perl ‧Android‧Eclipse ‧PostgreSQL‧Gnome ‧Debian‧KDE ‧X.org 13
    • other VCS way 14
    • Git Way metadata snapshots 15
    • Git Way metadata snapshots I’m a mini filesystem! Not just VCS. 15
    • Git Way metadata snapshots I’m a mini filesystem! Not just VCS. Apple Time Machine ! 15
    • : Working tree/Staging area/Repository 16
    • Why Git is Better than X http://zh-tw.whygitisbetterthanx.com‧‧‧Git‧Git‧Staging‧‧‧ GitHub!
    • Git SVN‧svn merge branch branch‧svn log‧svn commit checkout commit 18
    • 3-1. Git 19
    • Install‧ Git http://help.github.com/set-up-git-redirect‧ Git GUI(optional) GitX (Mac) TortoiseGit/Git Extensions (Windows) qgit (Linux)‧ SSH Key ssh-keygen -t rsa -C "your_email@youremail.com" 20
    • Setup‧ ~/.gitconfig‧git config --global user.name "Your Name"‧git config --global user.email "your@email.com"‧git config --global color.ui true‧git config --global core.editor "mate -w" (Textmate) 21
    • Setup (Windows only)‧‧git config --global core.autocrlf true‧git config --global core.safecrlf true 22
    • Repository‧mkdir sandbox‧cd sandbox‧git init 23
    • Repository‧SSH git clone git@github.com:ihower/sandbox.git‧HTTP/HTTPS git clone https://ihower@github.com/ihower/sandbox.git‧ Git protocol ( ) git clone git://github.com/ihower/sandbox.git‧File ( Dropbox git init --bare --shared !! Crazy!!) git clone file://path/to/repo.git 24
    • commit‧touch README‧git add README‧git status‧git commit -m “First Commit” 25
    • ‧ README‧git status‧git diff‧git add . ( !)‧git status‧git diff --cached‧git commit -m “Update README” 26
    • Staging commit‧touch a.rb‧touch b.rb‧git add a.rb‧git commit “Update a”‧git add b.rb‧git commit “Update b” 27
    • ‧git rm a.rb‧git mv b.rb c.rb‧git add .‧git commit “Remove a, Rename b to c”‧ copy ? Git cp 28
    • commitUntracked files Changes not Changes to be staged for commit committed 29
    • ‧git log‧git log --oneline‧git log --oneline --decorate --graph‧ GUI 30
    • ‧ .gitignore ( commit )‧ ~/.gitignore ( Global )‧ commit .gitkeep‧.gitignore https://github.com/github/gitignore 31
    • commit ?‧tmp/*‧log/*‧ ( )‧‧build/* compile‧.DS_Store‧Thumbs.rb 32
    • Commit‧ / / bug fixed unit test commit commit commit‧git diff --check‧commit 33
    • 3-2. Git 34
    • Branch ?‧topic feature‧Bug fixes‧ (refactor)‧ 35
    • branch‧git branch new_feature‧git branch‧git checkout new_feature‧touch new_feature.rb‧git add new_feature.rb‧git commit -m “New feature” 36
    • branch‧git branch new_feature‧git branch‧git checkout new_feature‧touch new_feature.rb‧git add new_feature.rb‧git commit -m “New feature” checkout working tree 36
    • branch‧git checkout master‧git merge new_feature 37
    • 38
    • (master) git branch iss53 39
    • (iss53) git commit 40
    • (master) git branch hotfix (hotfix) git commit 41
    • (master) git merge hotfix 42
    • (master) git merge hotfix fast-forward 42
    • (iss53) git commit 43
    • (master) git merge iss53 44
    • (master) git merge iss53 C6 merge commit 44
    • ‧Straight merge branch commits merge commit Parents fast-forward merge commit --no-ff 45
    • (cont.)‧Squashed commit git merge new_feature --squash merge-commit log SVN merge‧cherry-pick git cherry-pick 714cba commit 46
    • branch‧ working tree branch staging area modified‧ commit push reset‧ stash git stash git stash apply git stash clear 47
    • 3-3. Git push 48
    • push branch ...‧ SVN Git Commit commit logs!! commits commit commit commits commits 49
    • reset ( commit )‧git reset e37c75787‧git reset HEAD^ ( working tree)‧git reset HEAD^ --soft ( staging area)‧git reset HEAD^ --hard ( ) 50
    • revert ( commit )‧ reset revert commit‧git revert e37c75787‧git revert HEAD^ 51
    • rebase ( commit )‧git rebase -i e37c7578pick 048b59e first commitpick 995dbb3 change somethingpick aa3e16e changed# Rebase 0072886..1b6475f onto 0072886## Commands:# p, pick = use commit# r, reword = use commit, but edit the commit message# e, edit = use commit, but stop for amending# s, squash = use commit, but meld into previous commit# f, fixup = like "squash", but discard this commits log message# x, exec = run command (the rest of the line) using shell## If you remove a line here THAT COMMIT WILL BE LOST.# However, if you remove everything, the rebase will be aborted. 52
    • : rebase‧rebase ( local branch) 1. branch 2. branch commits apply/patch commit log local branch 53
    • : new_feature master D---E new_feature /A---B---C---F master 54
    • merge(new_feature) git merge master D--------E / A---B---C---F----G new_feature master 55
    • rebase G !(new_feature) git rebase master A---B---C---F---D---E new_feature master 56
    • rebase G !(new_feature) git rebase master A---B---C---F---D---E new_feature master merge commit 56
    • push commits push !! 57
    • rebase + merge ( feature branch develop)‧ feature branch merge feature branch typo commit feature branch commits‧ feature branch git rebase develop -i ( ) git rebase -i develop branch git merge feature --no-ff 58
    • mergecommit 59
    • (1)‧ --no-ff merge commit fast-forward‧rebase feature branch push‧ feature branch 60
    • (2)‧ rebase conflict‧ rebase branch rebase 61
    • 4. Github ? 62
    • =
    • GitHub?‧twitter ‧jQuery‧facebook ‧YUI 3‧rackspace ‧mootools‧digg ‧Ruby on Rails‧Yahoo! ‧node.js‧shopify ‧symfony‧EMI ‧mongodb‧six apart ‧Erlang 65
    • Watch! Fork
    • 67
    • Fork network 68
    • Patch ?‧Fork Repository‧Clone‧Fix bugs Enhance features‧Push‧ Pull request 69
    • Fork & Pull Requests 75% fork outside merge !!watch 25% outside contributions !! 70
    • Follow!
    • Wiki 72
    • Code ReviewDiff
    • Download Source or Package 74
    • Github pages http://pages.github.com/‧ your.github.com repository Github http://your.github.com‧ gh-pages your_project Github http://your.github.com/your_project 75
    • Github pages http://pages.github.com/‧ your.github.com repository Github http://your.github.com‧ gh-pages your_project Github http://your.github.com/your_project Git ( Branch merge) 75
    • 3-4. Git 76
    • Push GitHub Reporitory‧ Github‧git remote add origin git@github.com:your_account/ sandbox.git‧git push -u origin master‧ git push ![rejected] git pull 77
    • Pull‧git pull origin master git pull git fetch branch branch merge‧git pull --rebase rebase 78
    • git pull --rebase mergehttp://ihower.tw/blog/archives/3843 79
    • git pull --rebase mergehttp://ihower.tw/blog/archives/3843 branch master ! 79
    • git pull merge? rebase?‧ conflict merge feature branch ?‧ conflict --rebase 80
    • git pull merge? rebase?‧ conflict merge feature branch ?‧ conflict --rebase git flow branches merge ! 80
    • Git Submodule‧Git SVN‧ ? SVN Externals?‧ http://josephjiang.com/entry.php?id=342‧ ? http://josephjiang.com/entry.php?id=357‧ Ruby/Rails Develops XD Bundler dependencies 81
    • ‧git tag‧git archive‧git bisect‧git blame‧git grep‧git show‧git reflog ( commits 90 )‧git gc 82
    • 5. Git 83
    • 1. Repositories ? 84
    • Centralized Workflow Push Repository Branches ( ) 85
    • Integration-Manager Workflow Open Source Push Repository request pull GitHub Fork Pull Request 86
    • Dictator and Lieutenants Workflow Open Source Linux Kernel patch pull request 87
    • 2. Repository Branches ? 88
    • Git flow: branches http://nvie.com/posts/a-successful-git-branching-model/ http://ihower.tw/blog/archives/5140 89
    • ‧master: production-ready‧develop: 90
    • (1)‧Feature branches bugs develop merge develop develop ( merge rebase) 91
    • (1)‧Feature branches bugs develop merge develop develop ( merge rebase) branch!! 91
    • (2)‧Release branches release bugs develop merge master develop 92
    • (3)‧Hotfix branches release master master merge master develop 93
    • : Feature branches: develop release branches: hotfix branches: master 94
    • git-flow‧git flow init‧git flow feature finish feature_name‧git flow feature publish feature_name‧git flow feature track feature_name‧git flow feature finish feature_name 95
    • Branch-Owner Policy‧ project leaders commit/merge develop branch‧ release team master branch‧ topic branches pull request code review merge develop‧GitHub pull request 96
    • Code Review 97
    • Branch Diff 98
    • the maintainer workflow for git itself http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html‧master tracks the commits that should go into the next release‧maint tracks the commits that should go into the next "maintenance release"‧next is intended as a testing branch for topics being tested for stability for master.‧pu (proposed updates branches) is an integration branch for things that are not quite ready for inclusion yet‧topic branches for any nontrivial feature99
    • Ruby on Rails workflow‧ Rails 3.0.5‧master release 3.1‧stable branches 2-2-stable 2-3-stable bug fixes 3-0-stable bug fixes 100
    • One more thing... 101
    • git-svn‧ SubVersion Git Git !‧git svn clone http://url/svn/trunk/ project_name‧(normal git operations)‧git svn dcommit 102
    • ‧http://progit.org/book/‧http://git-scm.com‧http://help.github.com/‧http://gitimmersion.com‧http://www.gitready.com/‧http://gitref.org‧http://ihower.tw/blog/category/git‧Pragmatic Version Control Using Git, Pragmatic 103
    • Thank you.google “ihower” 104