I am trying to figure out the right workflow for this situation:
On the shared repo, we have these branches:
-master -feature
The feature branch is a shared branch, since many developers are working on a new feature together. They are actively pushing their changes to the feature branch.
I'm trying to avoid 'conflict hell' for the day that feature finally gets merged back into master. Currently, I see some options:
1) Actively merge master into feature, and do it often. However, this is not recommended in the git docs, and I'm starting to see why. When I try this, I seem to fix the same conflicts over and over again.
2) Use rebase in some way. I've read up on this, but it looks like it wont work since the feature branch is actually shared. All it takes is one developer to do 2 rebases, and other developers could have conflicts from mismatched history.
3) Turn the feature branch into an integration branch, and have the developers use their own independent feature branches with rebasing to keep things sane.
4) Something completely different?
The Feature Branch Workflow assumes a central repository, and main represents the official project history. Instead of committing directly on their local main branch, developers create a new branch every time they start work on a new feature.
GitHub Flow Branch Strategy The GitHub flow branching strategy is a relatively simple workflow that allows smaller teams, or web applications/products that don't require supporting multiple versions, to expedite their work. In GitHub flow, the main branch contains your production-ready code.
Build your strategy from these three concepts: Use feature branches for all new features and bug fixes. Merge feature branches into the main branch using pull requests. Keep a high quality, up-to-date main branch.
For a shared branch, I would go with #3, and use it as an "integration" branch to consolidate their work.
The developers would have to use rebase to constantly replay their private
branch on top of feature
before merging back their work to feature
, that way they are:
private
branch to feature
) a trivial one (normally fast-forward)(as described in "git rebase
vs. merge
" answer)
The idea is that, once feature
branch has to be merged in master
, no more contribution is accepted on feature
(the branch is "frozen"), and you can safely rebase it on top of master
first, or merge it directly to master
.
And then you start a new feature
branch (which can actually start in parallel of the previous feature
branch if needed)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With