I want to make some branch naming changes from the original model. First I was going to swap develop and master with master and production. I've gone a step further and done away with master. I want my branches to be develop, qa, and production.
First, how to initialize this in a new repo:
Now, how to push to the matching github repository, spazm/fakerepo? Normally I'd use:
% mkdir fakerepo
% cd fakerepo
% git init fakerepo
Initialized empty Git repository in /Users/andrew/src/fakerepo/.git/
% git flow init
No branches exist yet. Base branches must be created now.
Branch name for production releases: [master] production
Branch name for "next release" development: [develop]
How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/] qa
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []
% git branch
* develop
production
#git flow saves elements to the local repo configuration, .git/config
% git config -l | grep gitflow
gitflow.branch.master=production
gitflow.branch.develop=develop
gitflow.prefix.feature=feature/
gitflow.prefix.release=qa
gitflow.prefix.hotfix=hotfix/
gitflow.prefix.support=support/
gitflow.prefix.versiontag=
But now I don't have a local master. Should I be using the publish features?
#Add manually, rather than via git flow * publish
git remote add origin git@github.com:spazm/fakerepo.git
git push -u origin master
% git remote add origin git@github.com:spazm/fakerepo.git
% git push --set-upstream origin develop
Counting objects: 2, done.
Writing objects: 100% (2/2), 173 bytes, done.
Total 2 (delta 0), reused 0 (delta 0)
To git@github.com:/spazm/fakerepo.git
* [new branch] develop -> develop
Branch develop set up to track remote branch develop from origin.
% git push --set-upstream origin production
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:/spazm/fakerepo.git
* [new branch] production -> production
Branch production set up to track remote branch production from origin.
% git branch
* develop
production
% git branch -r
origin/develop
origin/production
Now, what does the next user need to do after he clones the remote repo?
Question: Do I really have to manually set up the tracking branches when I clone, prior to running git-init? That seems messy. I'll keep digging and let you know.
% git clone git@github.com:spazm/fakerepo.git
% cd fakerepo
% git status
# On branch develop
nothing to commit (working directory clean)
% git branch
* develop
% git branch -r
origin/HEAD -> origin/develop
origin/develop
origin/production
% git config -l | grep gitflow
#blank, the gitflow configuration items aren't present in the checkout.
% git flow init
Which branch should be used for bringing forth production releases?
- develop
Branch name for production releases: [] production
Local branch 'production' does not exist.
#manually bring over tracking branches
% git branch --track production origin/production
Branch production set up to track remote branch production from origin.
% git flow init
Which branch should be used for bringing forth production releases?
- develop
- production
Branch name for production releases: [production]
Which branch should be used for integration of the "next release"?
- develop
Branch name for "next release" development: [develop]
How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/] qa
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []
% git config -l |grep gitflow
gitflow.branch.master=production
gitflow.branch.develop=develop
gitflow.prefix.feature=feature/
gitflow.prefix.release=qa
gitflow.prefix.hotfix=hotfix/
gitflow.prefix.support=support/
gitflow.prefix.versiontag=