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=
1 comment:
Yes, you do.
If you're cloning someone else's repository, it might have loads of branches, and you generally don't want to replicate them all locally.
This is (probably) why git doesn't create local branches by default.
However, you do not need to specify --track in your branch command.
Git will assume --track if you branch off a remote branch.
You can also do:
git checkout -t origin/develop,
which does the same thing but checks the branch out (as git assumes that your local branch should be called 'develop').
Post a Comment