Git flow for daily use
Upcoming SlideShare
Loading in...5
×
 

Git flow for daily use

on

  • 3,995 views

 

Statistics

Views

Total Views
3,995
Views on SlideShare
3,980
Embed Views
15

Actions

Likes
9
Downloads
41
Comments
0

5 Embeds 15

http://www.jamoralesr.com 4
http://carga.entraccion.cl 4
http://ericndunn.wordpress.com 4
https://ericndunn.wordpress.com 2
https://twitter.com 1

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Git flow for daily use Git flow for daily use Presentation Transcript

  • Git-Flow for Daily Use Kevin Basarab Twitter: @kBasarab IRC: @kBasarab
  • Prereqs ● Git 101 ● A multiple environment setup (Dev-Stage-Prod) ● Comfortable on the CLI
  • Benefits ● Parallel Development ● Collaboration ● Release Staging ● Support for Emergency fixes Source: http://datasift.github.com/gitflow/IntroducingGitFlow.html
  • What is Git-Flow ● At the core Git-flow is a branching and merging strategy ● GIT branches are cheap, merges are easy ● Other systems: Each branch is a complete replication of codebase
  • Branching 101 > git branch -a; develop new_branch *develop master remotes/origin/master remotes/origin/develop > git checkout -b new_branch Switched to a new branch 'new_branch' > git branch develop ... *new_branch > git branch test_2
  • Merging 101 > git checkout develop; Switched to branch 'develop' > git merge new_branch
  • ● Master Branch ○ The production site codebase ● Develop Branch ○ All code ready for production on a staging environment ● Feature ○ Active code development. Usually related to one ticket. ● Release ○ Integration branch to test develop merging into master ● Hotfix ○ Emergency fix to the production site Terminology
  • Visualize Git-Flow Source: http://nvie.com/posts/a-successful-git-branching-model/
  • Visualize Git-Flow Source: http://nvie.com/posts/a-successful-git-branching-model/
  • Visualize Git-Flow Source: http://nvie.com/posts/a-successful-git-branching-model/
  • Visualize Git-Flow Source: http://nvie.com/posts/a-successful-git-branching-model/
  • Source: http://bit.ly/10iUTKK
  • Scenario ● Start using git-flow on a basic git repo ● Roll code based on a ticket ● Have a peer code review or help build functionality. ● Release this to production ● We had a misspelling, fix on production
  • Setup Git-Flow ● Install git-flow locally. ○ https://github.com/nvie/gitflow/wiki/Mac-OS-X ○ https://github.com/nvie/gitflow/wiki/Linux ○ https://github.com/nvie/gitflow/wiki/Windows > git status # On branch master nothing to commit (working directory clean) > git-flow init Which branch should be used for bringing forth production releases? - master Branch name for production releases: [master] Branch name for "next release" development: [develop] How to name your supporting branch prefixes? Feature branches? [feature/] Release branches? [release/] Hotfix branches? [hotfix/] Support branches? [support/] Version tag prefix? []
  • > git checkout develop Create feature > git branch * develop master > git-flow feature start 1234-78900-Add-Feature Switched to a new branch 'feature/1234-78900-Add-Feature' Summary of actions: - A new branch 'feature/1234-78900-Add-Feature' was created, based on 'develop' - You are now on branch 'feature/1234-78900-Add-Feature' Now, start committing on your feature. When done, use: git flow feature finish 1234-78900-Add-Feature
  • > git-flow feature publish 1234-78900-Add-Feature Total 0 (delta 0), reused 0 (delta 0) remote: bb/acl: kbasarab is allowed. accepted payload. To test.git * [new branch] feature/1234-78900-Add-Feature -> feature/1234- 78900-Add-Feature Already on 'feature/1234-78900-Add-Feature' Summary of actions: - A new remote branch 'feature/1234-78900-Add-Feature' was created - The local branch 'feature/1234-78900-Add-Feature' was configured to track the remote branch - You are now on branch 'feature/1234-78900-Add-Feature' Publish feature # Another user on another computer: > git fetch > git checkout feature/1234-78900-Add-Feature ... > git fetch; git rebase origin/feature/1234-78900-Add-Feature ... > git push origin feature/1234-78900-Add-Feature
  • > git-flow feature finish 1234-78900-Add-Feature Switched to branch 'develop' Already up-to-date. Deleted branch feature/1234-78900-Add-Feature (was f135b69). Summary of actions: - The feature branch 'feature/1234-78900-Add-Feature' was merged into 'develop' - Feature branch 'feature/1234-78900-Add-Feature' has been removed - You are now on branch 'develop' Finish feature > git push origin develop Total 0 (delta 0), reused 0 (delta 0) remote: bb/acl: kbasarab is allowed. accepted payload. To test.git f22f2d0..f135b69 develop -> develop > git push origin :feature/1234-78900-Add-Feature remote: bb/acl: kbasarab is allowed. accepted payload. To test.git - [deleted] feature/1234-78900-Add-Feature
  • > git-flow release start 2013-03-14.0 Switched to a new branch 'release/2013-03-14.0' Summary of actions: - A new branch 'release/2013-03-14.0' was created, based on 'develop' - You are now on branch 'release/2013-03-14.0' Follow-up actions: - Bump the version number now! - Start committing last-minute fixes in preparing your release - When done, run: git flow release finish '2013-03-14.0' Create release > git push origin release/2013-03-14.0 Total 0 (delta 0), reused 0 (delta 0) remote: bb/acl: kbasarab is allowed. accepted payload. To test.git * [new branch] release/2013-03-14.0 -> release/2013-03-14.0
  • > git-flow release finish 2013-03-14.0 Switched to branch 'master' Merge made by the 'recursive' strategy. example.txt | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) Deleted branch release/2013-03-14.0 (was f135b69). Summary of actions: - Latest objects have been fetched from 'origin' - Release branch has been merged into 'master' - The release was tagged '2013-03-14.0' - Release branch has been back-merged into 'develop' - Release branch 'release/2013-03-14.0' has been deleted > git push origin :release/2013-03-14.0 remote: bb/acl: kbasarab is allowed. accepted payload. To test.git - [deleted] release/2013-03-14.0 Finish release
  • > git push --tags Counting objects: 2, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (2/2), 352 bytes, done. Total 2 (delta 0), reused 0 (delta 0) remote: bb/acl: kbasarab is allowed. accepted payload. To test.git * [new tag] 2013-03-14.0 -> 2013-03-14.0 Finish release
  • > git-flow hotfix start 2013-03-17.0 Switched to a new branch 'hotfix/2013-03-17.0' Summary of actions: - A new branch 'hotfix/2013-03-17.0' was created, based on 'master' - You are now on branch 'hotfix/2013-03-17.0' Follow-up actions: - Bump the version number now! - Start committing your hot fixes - When done, run: git flow hotfix finish '2013-03-17.0' > ... Commits > git-flow hotfix finish 2013-03-17.0 > git push origin master > git push --tags Hotfix
  • ● http://www.mediacurrent.com/blog/webinar-git-intro ● http://nvie.com/posts/a-successful-git-branching-model/ ● http://datasift.github.com/gitflow/IntroducingGitFlow.html Resources
  • Thank You! Questions Twitter: @kBasarab IRC: @kBasarab