5

As a followup to my question about unavailable branches after svn to git migration, I have a different problem: I'm unable to push new branches to my central Git repository.

$ git clone ssh://server/opt/git/our_app.git
$ cd our_app
$ git branch my-test-branch
$ git checkout my-test-branch
$ echo test > test.txt
$ git add test.txt
$ git commit test.txt -m "test commit"
[master ed81ec0] test commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 test.txt
$ git push
Everything up-to-date

So, this does not push my branch to the server. A colleague advised me to look into my .git/config, which looks like this:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = ssh://server/opt/git/our_app.git
[branch "master"]
    remote = origin
    merge = refs/heads/master

I was adviced to manually add a push entry:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = ssh://server/opt/git/our_app.git
    push = refs/heads/*:refs/heads/*

Now things looked better:

$ git push
Password: 
Counting objects: 1, done.
Delta compression using up to 1 threads.
Compressing objects: 100% (1/1), done.
Writing objects: 100% (1/1), 5 bytes, done.
Total 1 (delta 1), reused 0 (delta 0)
To ssh://server/opt/git/our_app.git
 * [new branch]      my-test-branch -> my-test-branch

While this worked, it still feels like a hack. What's the proper way to do this?

Community
  • 1
  • 1
neu242
  • 15,796
  • 20
  • 79
  • 114
  • 3
    The default behavior for `git push` is to push branches that have matching destinations in existence on the remote end. New branches don't have such matching destinations. You can change the default behavior with the `push.default` config variable. – Amber Oct 25 '10 at 08:00

3 Answers3

4

To push a new branch use git push origin my-test-branch

abyx
  • 69,862
  • 18
  • 95
  • 117
4

If you just want to push your branch with the same branch name then just use

git push origin my-test-branch

If you want your changes to appear on the master branch of the origin repo:

git push origin my-test-branch:master
Dipstick
  • 9,854
  • 2
  • 30
  • 30
4

You can push a branch to a remote repository with

git push origin my-test-branch

You can then view all remote branches with

git branch -r

Here's an introduction to creating/removing remote branches.

Garrett Hyde
  • 5,409
  • 8
  • 49
  • 55