HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
nvie
gitflow
Shell2010–2024
nvie / gitflow · Archived

gitflow

Git extensions to provide high-level repository operations for Vincent Driessen's branching model.

28Distinct people
29Mentions
3Explicit recommenders
26.8KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Git extensions to provide high-level repository operations for Vincent Driessen's branching model.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

I cannot imagine attending a hackathon without a branching strategy. It may be out of touch for some beginners but I highly recommend Nvie's GitFlow…

Swelly used a recommendation phrase. 3 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year29 dated mentions

Observed mentions: 2010-10-24 17:39:04 UTC to 2024-01-15 10:41:09 UTC.

02462010-01-01 00:00:00 UTC to 2011-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments20102011-01-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20102010-01-01 00:00:00 UTC2011-01-01 00:00:00 UTC505
20112011-01-01 00:00:00 UTC2012-01-01 00:00:00 UTC505
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC606
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC606
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC202
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC000
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC101
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC000
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC110
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC211
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Important ⚠️ git-flow has moved to git-flow-next! This repository is no longer maintained. The wonderful team at Tower has created git-flow-next — a modern, fully customizable evolution of git-flow, built on a generic branch dependency model. It’s fully backward compatible with git-flow, open source, and actively maintained. Get started with git-flow-next: Website: https://git-flow.sh GitHub: https://github.com/gittower/git-flow-next Evolution Story: Read about the journey from git-flow → git-flow-avh → git-flow-next in their blog post Why git-flow-next? git-flow-next builds upon the foundation laid by the original git-flow, offering: Full customization of branch names and workflow Modern implementation with active maintenance Backward compatibility with existing git-flow workflows Upcoming features like stacked branches and topic branch syncing Thank you ❤️ To everyone who has used, contributed to, and supported git-flow over the past 15+ years — thank you! Your feedback, contributions, and adoption made git-flow one of the most widely-used Git workflow tools. Special thanks to Peter van der Does for maintaining git-flow-avh, and to the folks at Tower for carrying the torch forward with git-flow-next. (Below, you’ll find the original documentation for historical reference.) 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. 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 on develop. 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 on develop. 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 on master. 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 on master.
Read the full README on GitHub

What Hacker News says

29 sources
`git push -f` and solipsistic shared reality; when you `push -f` everyone gets to vote on what chain of commit hashes is the real ${orgname}/${reponame}//${branch} There is no formal consensus mechanism beyond push permission in git itself; and so what would be regressive centralization of technically decentralized [git] in order to enforce directory-level permissions like e.g. CODEOWNERS is actually necessary for quality control. Eventually, Github and Gitlab integrated code review like ReviewBoard and Gerrit (instead of mailing list patchbombs and quilt); and code review approval from zero one or more authorized reviewers is now an optional necessary precondition for merging to a git branch as a social construct. DevSecOps says, Pull Requests (or Merge Requests) are merged only when (1) all of the automated tests pass; and (2) enough n
Read the rest
ecessary reviewers have indicated approval. Git doesn't tell you when it's necessary to have full test coverage and manual infosec review in development cycles that produce releases, and neither do Pull Requests. https://westurner.github.io/hnlog/#comment-19552164 ctrl-f hubflow It looks like datasift's gitflow/hubflow docs are 404'ing, but the original nvie blog post [1] has the Git branching workflow diagrams; which the wpsharks/hubflow fork [3] of datasift/gitflow fork [2] of gitflow [1]has a copy of in the README: [1] https://github.com/nvie/gitflow [2] https://github.com/datasift/gitflow [3] https://github.com/wpsharks/hubflow?tab=readme-ov-file https://learngitbranching.js.org/ is still a great resource, and it could work on mobile devices. The math of VCS deltas and mutable and immutable content-addressed DAG nodes identified by 2^n bits describing repo/$((2*inf)) bits ; >> "ugit – Learn Git Internals by Building Git in Python" https://www.leshenko.net/p/ugit/ SLSA.dev is a social construct atop e.g. git, which is really a low-level purpose-built tool and Perl and now Python porcelain. jj (jujutsu) is a git-compatible VCS CLI: https://github.com/martinvonz/jj "Ask HN: Best Git workflow for small teams" (2016) https://news.ycombinator.com/item?id=12941997 How much social construct atop git is necessary for e.g. the CPython project? Python Devguide > Getting Started > [ Git bootcamp and cheat sheet , Lifecycle of a pull request ] https://devguide.python.org/getting-started/ Python Devguide > Development workflow > Development cycle > Branches: https://devguide.python.org/developer-workflow/development-c... : > [ In-development (main) branch, Maintenance branches, Security branches, End-of-life branches ] Git branches have lifecycles.
In Git Branches as a Social Construct
We are a trusting team and don't do pull requests with our closed source repos either. To avert chaos it's much better to have an orderly branching model in place e.g. feature branches! My fellow partners made us go all "git flow" last year and the result has been a really tidy and satisfying workflow: http://nvie.com/posts/a-successful-git-branching-model/ Atlassian's SourceTree also helps us with maintaining "the flow": http://www.sourcetreeapp.com https://www.atlassian.com/git/workflows Git extensions and screencast on how to setup on OSX: https://github.com/nvie/gitflow http://build-podcast.com/git-flow/
In Best practices in modern web projects
Swelly·Nov 14, 2013Recommendation phrase
I cannot imagine attending a hackathon without a branching strategy. It may be out of touch for some beginners but I highly recommend Nvie's GitFlow (https://github.com/nvie/gitflow). My first hackathon was one of the best coding experience's I have had since jumping into the programming community but... man, it would've been so much better if my team didn't have an anxiety attack every time we merged code. It also saves you a ton of time which is crucial at a hack.
In 4 Things You Should Do To Prepare for A Hackathon
sethrin·Sep 26, 2013Recommendation phrase
Are you using gitflow? https://github.com/nvie/gitflow So yes, if you try to push without pulling down changes, then you will get an error about the histories having diverged. Sometimes you don't care about wiping out history, and can just push with the -f parameter, but most of the time that's your cue to rebase. Branches are cheap in git, and there's no real advantage to doing dev work in the master branch. You should create a branch at least as often as you develop a new feature. In git, history isn't necessarily a static thing. Sometimes you need to mangle it to achieve your goals, and sometimes you fat-finger the merge and do time in History Hell. In either case it's only a huge flaming deal if you're working on master. Ditto with the problem you describe. I recommend the O'Reilly book on Git. The simple explanations are nice in theo
Read the rest
ry, but this is a complicated subject and deserves a full explanation. There are very sound reasons for the how and why of git, and they should be within the grasp of any aspiring programmer.
In Git concepts simplified
We've just started using this where I'm currently working, and it definitely makes a lot of sense. There's a command line tool which helps you keep to this branching model. Available here. https://github.com/nvie/gitflow Unfortunately it seems to of been abandoned by the author. A more active fork is available here https://github.com/petervanderdoes/gitflow Note that if installing on Ubuntu using apt, you'll get the no longer maintained version. This cheat sheet helped me get up and flowing fast. http://danielkummer.github.io/git-flow-cheatsheet/
In A successful Git branching model (2010)
I've been using it for about a year now and it has worked absolute wonders for me. I'm currently building a package manager/deployment tool/automatic updater around the concept and I'm enjoying the hell out of it. My focus is on applications that a client (typically site developers) installs, so this might be different from other developers here. The main benefit of Nvies Branching Model is that it reduces anxiety. Since you keep both fixes and features on separate branches, you minimize the anxiety of "can I do this now?" and "wouldn't this also break that". Instead, you just push and push and merge and worry later. You can work on several bugs for several clients - at the same time. Zero anxiety about fixing one thing for one client that breaks another thing for another client. The golden rule is simply that you don't merge to master (o
Read the rest
r, for that matter, to a release-x branch) what isn't well tested to be good on a feature-x or hotfix-x branch. So using that thing I currently build[0], I can just push-to-deploy whatever I'm working on without being afraid that I break clients who have automatic updates enabled. With this strategy, it's up to the clients: If they subscribe to a development or feature branch, it's understood that things could break. I simply have to be careful what touches master and that's it. (And in most cases, clients only subscribe to other branches in a support context, anyways.) Finally - Yes, there is a certain overhead, but you can use git-flow[1] on the command line to keep that down to a minimum. [0] http://mangrove.valanx.org [caution: WIP] [1] https://github.com/nvie/gitflow
In What git branching models actually work?

Showing the 15 most recent of 29 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.