2011-06-30 8 views
15

He instalado gitolite (localmente por ahora, para experimentar) y parece funcionar, excepto que los repositorios nuevos no están rastreando el control remoto de forma predeterminada después de un clon git. Si mal no recuerdo, cuando clono un repositorio de github.com, ya es capaz de empujar y tirar.gitolite: controles remotos predeterminados para el nuevo repositorio

Aquí es lo que he intentado:

$ git clone [email protected]:sandbox 
Cloning into sandbox... 
warning: You appear to have cloned an empty repository. 
$ echo "A" > README 
$ git add README 
$ git commit README -m 'test' 
$ git push 
No refs in common and none specified; doing nothing. 
Perhaps you should specify a branch such as 'master'. 
fatal: The remote end hung up unexpectedly 
error: failed to push some refs to '[email protected]:sandbox' 

Cuando trato de empujar todo funciona de manera explícita:

$ git push origin master 
Counting objects: 6, done. 
Delta compression using up to 2 threads. 
Compressing objects: 100% (2/2), done. 
Writing objects: 100% (6/6), 426 bytes, done. 
Total 6 (delta 0), reused 0 (delta 0) 
To [email protected]:sandbox 
* [new branch]  master -> master 

es realmente necesario este paso adicional? Se puede configurar de forma predeterminada? En github es, ¿verdad?

Gracias

+0

Según tengo entendido, la gitosis ya no se recomienda para los nuevos repositorios/servidores. Mejor usar gitolita. –

+0

Vaya, en realidad estoy usando gitolita, pero cometí un error en la pregunta. Ahora está arreglado. – stivlo

Respuesta

22

El primer git push siempre requieren para especificar la rama que quiere empujar.

git push -u origin master 

continuación, el siguiente impulso se puede hacer, de la misma rama, como se pretendía:

git push 

De git push man page:

El refspec especial : (o +: a los no -las actualizaciones rápidas) le indica a git que presione las ramas "coincidentes": por cada rama que existe en el lado local, el lado remoto se actualiza si ya existe una rama del mismo nombre en el rem ota lado.
Este es el modo de operación predeterminado si no se encuentra ningún refspec explícito.

Puesto que usted ha clonado un repositorio vacío, el primer impulso no se encontró ninguna rama correspondiente (no hay ninguno en el repositorio aguas arriba 'origin')

Nota: Ver "What is the result of git push origin?":

la política predeterminada para git push cambiará con git 2.0 (o tal vez git1.9)

Un nuevo modo para empujar, "simple", que i s se ha introducido un cruce entre "current" y "upstream".
"git push" sin ningún refspec empujará la rama actual al mismo nombre en el repositorio remoto solo cuando esté configurada para rastrear la rama con el mismo nombre allí.
El plan es hacer de este modo el nuevo valor predeterminado cuando push.default no está configurado.

Así que en el git push -u origin master, la -u (--set-upstream-to) es importante aquí (no sólo para empujar la rama con el mismo nombre que el mando a distancia 'origin', pero una rama de seguimiento remoto.

+0

Gracias, así que mientras tanto me acostumbraré. Entonces, probablemente Github inicialice el repositorio para usted. Comprobaré con un repositorio ficticio en la primera ocasión. – stivlo

0

Puede use el comando git branch --set-upstream, ej.:
git branch --set-upstream develop origin/develop

Cuestiones relacionadas