gitflow
Git extensions to provide high-level repository operations for Vincent Driessen's branching model.
Top Related Projects
AVH Edition of the git extensions to provide high-level repository operations for Vincent Driessen's branching model
Git-Tutorials GIT基本使用教學 :memo:
Quick Overview
GitFlow is a branching model and set of Git extensions designed to provide a robust framework for managing larger projects. It defines a strict branching structure centered around project releases, allowing teams to organize their development process more efficiently and maintain a clean project history.
Pros
- Provides a clear, structured workflow for managing complex projects
- Facilitates parallel development and collaboration among team members
- Supports the management of multiple versions and hotfixes
- Enhances release management and versioning processes
Cons
- Can be overly complex for smaller projects or teams
- Requires a learning curve and team buy-in to implement effectively
- May lead to long-lived feature branches, potentially causing integration issues
- Some argue it doesn't align well with continuous delivery practices
Getting Started
To start using GitFlow, follow these steps:
-
Install GitFlow:
# On macOS with Homebrew brew install git-flow-avh # On Linux apt-get install git-flow
-
Initialize GitFlow in your repository:
git flow init
-
Start a new feature:
git flow feature start my-new-feature
-
Finish a feature:
git flow feature finish my-new-feature
-
Create a release:
git flow release start 1.0.0 git flow release finish 1.0.0
For more detailed instructions and advanced usage, refer to the official GitFlow documentation.
Competitor Comparisons
AVH Edition of the git extensions to provide high-level repository operations for Vincent Driessen's branching model
Pros of gitflow-avh
- More actively maintained with regular updates and bug fixes
- Includes additional features like support for Git submodules and improved tag management
- Better compatibility with newer Git versions and operating systems
Cons of gitflow-avh
- Slightly more complex installation process compared to the original gitflow
- Some users report occasional issues with certain edge cases or specific Git configurations
Code Comparison
gitflow:
git flow feature start my-feature
git flow feature finish my-feature
gitflow-avh:
git flow feature start my-feature
git flow feature publish my-feature
git flow feature finish my-feature
The main difference in usage is the additional publish
command available in gitflow-avh, which allows for easier collaboration on feature branches.
Both repositories implement the Git Flow branching model, but gitflow-avh offers more features and active development. While the original gitflow is simpler, it lacks some modern Git functionality. gitflow-avh provides a more robust solution for teams requiring advanced Git Flow capabilities, despite a slightly steeper learning curve.
Git-Tutorials GIT基本使用教學 :memo:
Pros of Git-Tutorials
- More comprehensive tutorial covering various Git concepts and workflows
- Includes practical examples and step-by-step guides for beginners
- Regularly updated with new content and community contributions
Cons of Git-Tutorials
- Less focused on a specific Git workflow compared to Gitflow
- May be overwhelming for users looking for a standardized branching model
- Lacks specialized tools or scripts for implementing a particular workflow
Code Comparison
Git-Tutorials example (basic branching):
git checkout -b feature_branch
# Make changes
git add .
git commit -m "Add new feature"
git push origin feature_branch
Gitflow example (feature branch):
git flow feature start new_feature
# Make changes
git add .
git commit -m "Add new feature"
git flow feature finish new_feature
While Git-Tutorials provides general Git usage examples, Gitflow offers a more structured approach with specialized commands for managing feature branches within its workflow.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
git-flow
A collection of Git extensions to provide high-level repository operations for Vincent Driessen's branching model.
Getting started
For the best introduction to get started with git flow
, please read Jeff
Kreeftmeijer's blog post:
http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/
Or have a look at one of these screen casts:
- How to use a scalable Git branching model called git-flow (by Build a Module)
- A short introduction to git-flow (by Mark Derricutt)
- On the path with git-flow (by Dave Bock)
Installing git-flow
See the Wiki for up-to-date Installation Instructions.
Integration with your shell
For those who use the Bash or ZSH shell, please check out the excellent work on the git-flow-completion project by bobthecow. It offers tab-completion for all git-flow subcommands and branch names.
FAQ
See the FAQ section of the project Wiki.
Please help out
This project is still under development. Feedback and suggestions are very welcome and I encourage you to use the Issues list on Github to provide that feedback.
Feel free to fork this repo and to commit your additions. For a list of all contributors, please see the AUTHORS file.
Any questions, tips, or general discussion can be posted to our Google group: http://groups.google.com/group/gitflow-users
Contributing
Fork the repository. Then, run:
git clone --recursive git@github.com:<username>/gitflow.git
cd gitflow
git branch master origin/master
git flow init -d
git flow feature start <your feature>
Then, do work and commit your changes. Hint: export PATH=`pwd`:$PATH
from within the gitflow directory makes sure you're using the version of
gitflow you're currently developing.
git flow feature publish <your feature>
When done, open a pull request to your feature branch.
License terms
git-flow is published under the liberal terms of the BSD License, see the LICENSE file. Although the BSD License does not require you to share any modifications you make to the source code, you are very much encouraged and invited to contribute back your modifications to the community, preferably in a Github fork, of course.
Initialization
To initialize a new repo with the basic branch structure, use:
git flow init [-d]
This will then interactively prompt you with some questions on which branches you would like to use as development and production branches, and how you would like your prefixes be named. You may simply press Return on any of those questions to accept the (sane) default suggestions.
The -d
flag will accept all defaults.
Creating feature/release/hotfix/support branches
-
To list/start/finish feature branches, use:
git flow feature git flow feature start <name> [<base>] git flow feature finish <name>
For feature branches, the
<base>
arg must be a commit ondevelop
. -
To push/pull a feature branch to the remote repository, use:
git flow feature publish <name> git flow feature pull <remote> <name>
-
To list/start/finish release branches, use:
git flow release git flow release start <release> [<base>] git flow release finish <release>
For release branches, the
<base>
arg must be a commit ondevelop
. -
To list/start/finish hotfix branches, use:
git flow hotfix git flow hotfix start <release> [<base>] git flow hotfix finish <release>
For hotfix branches, the
<base>
arg must be a commit onmaster
. -
To list/start support branches, use:
git flow support git flow support start <release> <base>
For support branches, the
<base>
arg must be a commit onmaster
.
Showing your appreciation
A few people already requested it, so now it's here: a Flattr button.
Of course, the best way to show your appreciation for the original blog post or the git-flow tool itself remains contributing to the community. If you'd like to show your appreciation in another way, however, consider Flattr'ing me:
Top Related Projects
AVH Edition of the git extensions to provide high-level repository operations for Vincent Driessen's branching model
Git-Tutorials GIT基本使用教學 :memo:
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot