2010-10-25 9 views
5

Como seguimiento de my question about unavailable branches after svn to git migration, tengo un problema diferente: no puedo enviar nuevas sucursales a mi repositorio central de Git.¿Por qué tengo problemas para enviar nuevas sucursales a mi repositorio de Git?

$ 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 

Por lo tanto, esto no empuja mi rama al servidor. Un colega me aconsejó que mirar en mi .git/config, que se ve así:

[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 

me aconsejaron añadir manualmente una entrada de empuje:

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

Ahora las cosas se veían mejor:

$ 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 

Mientras esto funcionó, todavía se siente como un truco. ¿Cuál es la forma correcta de hacer esto?

+3

El comportamiento predeterminado de 'git push' es empujar ramas que tienen destinos coincidentes en existencia en el extremo remoto. Las nuevas sucursales no tienen esos destinos coincidentes. Puede cambiar el comportamiento predeterminado con la variable de configuración 'push.default'. – Amber

Respuesta

4

para empujar una nueva rama utilizar git push origin my-test-branch

4

Si lo que desea es empujar su rama con el mismo nombre de la sucursal a continuación, sólo tiene que utilizar

git push origin my-test-branch 

Si quieres que aparezcan los cambios en la rama principal de el repositorio de origen:

git push origin my-test-branch:master 
4

Es posible transferir la rama en un repositorio remoto con

git push origin my-test-branch

A continuación, puede ver todas las sucursales remotas con

git branch -r

Here's an introduction a la creación/eliminación de las ramas remotas.

Cuestiones relacionadas