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]
reposito开发者_StackOverflow中文版ryformatversion = 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?
To push a new branch use git push origin my-test-branch
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
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.
精彩评论