I want to be able to do the following:
Create a local branch based on some other (remote or local) branch (via
git branch
orgit checkout -b
)Push the local branch to the remote repository (publish), but make it trackable so
git pull
andgit push
will work immediately.
How do I do that?
I know about --set-upstream
in Git 1.7, but that is a post-creation action. I want to find a way to make a similar change when pushing the branch to the remote repository.
Prior to the introduction of
git push -u
, there was nogit push
option to obtain what you desire. You had to add new configuration statements.If you create a new branch using:
You can use the
git config
command to avoid editing directly the.git/config
file.Or you can edit manually the
.git/config
file to had tracking information to this branch.If you are not sharing your repo with others, this is useful to push all your branches to the remote, and
--set-upstream
tracking correctly for you:(Not exactly what the OP was asking for, but this one-liner is pretty popular)
If you are sharing your repo with others this isn't really good form as you will clog up the repo with all your dodgy experimental branches.
To create a new branch by branching off from existing branch
git checkout -b <new_branch>
and then push this new branch to repository using
git push -u origin <new_branch>
This creates and pushes all local commits to a newly created remote branch
origin/<new_branch>
I simply do
over an already cloned project.
Git creates a new branch named
remoteBranchToBeCreated
under my commits I did inlocalBranch
.I made an alias so that whenever I create a new branch, it will push and track the remote branch accordingly. I put following chunk into the
.bash_profile
file:Usage: just type
gcb thuy/do-sth-kool
withthuy/do-sth-kool
is my new branch name.To upload your local branch of a public repository, you need to
cd
to the public repository and then use the following code: