5. 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
8. Terminology
●
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
14. 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
15. 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? []
16. Create Feature
> git branch
* develop
master
> git checkout develop
> 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
17. Publish 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/123478900-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'
# 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
18. Finish 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'
> 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
19. Create release
> 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'
> 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
20. Finish Release
> 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
21. 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
22. Hotfix
> 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