views:

2321

answers:

3

I've taken the following steps so far:

1) Cloned a remote Git repo 2) Branched the master branch to an experimental 3) edited/tested/committed code in the experimental branch

Now, I'm not ready to merge experimental into master. I do however want to push it back to the remote repo as that's the repository I share with a few colleagues. I'd like for them to see what I've done in the experimental branch. I typically just access the remote repo via ssh.

How do I share my local branch on the remote repo, without affecting the remote repo's master branch?

A: 

This page on Github guides might help you out (it's not Github specific).

dylanfm
Doesn't that move it to the master branch, or will it implicitly create a origin/same_branch_name_as_local?
Coocoo4Cocoa
+1  A: 

If the name of your branch is experimental, and the name of the remote is origin, then it's

git push origin experimental
John Douthat
Same comment as above, but does that create the experimental branch implicitly on the remote repo, or will it push to remote's master?
Coocoo4Cocoa
it pushes the experimental branch and doesn't touch master on either the local side or remotely
John Douthat
+14  A: 

According to git push manual page:

 git push origin experimental

Find a ref that matches experimental in the source repository (most likely, it would find refs/heads/experimental), and update the same ref (e.g. refs/heads/experimental) in origin repository with it.
If experimental did not exist remotely, it would be created.

It is the same than:

git push origin experimental:refs/heads/experimental

Create the branch experimental in the origin repository by copying the current experimental branch.
This form is only needed to create a new branch or tag in the remote repository when the local name and the remote name are different; otherwise, the ref name on its own will work.

Or, like mentioned in git tip, you can set up a "Branch’s Default Remote":

You can use git config to assign a default remote to a given branch. This default remote will be used to push that branch unless otherwise specified.

This is already done for you when you use git clone, allowing you to use git push without any arguments to push the local master branch to update the origin repository’s master branch.

git config branch.<name>.remote <remote>

can be used to specify this manually.

VonC