2010-11-05 19 views
14

Lo sentimos si esta pregunta ya se ha hecho.Configurar una sucursal local para enviar a una sucursal específica

Am clonación a partir de un acuerdo de recompra llamado "git_lab", que tiene una rama llamada "prueba" Al clonar yo uso "-b myname_test" para crear una rama local llamado "myname_test" y el clon local se denomina "myname_git_lab"

Cuando hago "git pull", automáticamente recupera y combina los cambios de "prueba" a "myname_test", pero para git push, necesito especificar el repositorio y el nombre de la rama.

$> git espectáculo remota git_lab

rama local configurado para 'git pull': myname_test se fusiona con la prueba remota

¿Hay una manera donde puedo configurar "rama local configurado para 'git push' "¿Así que no necesito especificar el nombre de la rama y el repo?

Respuesta

26

Hay dos cosas que puede hacer aquí.

  • Establecer push.default a tracking, por lo que empujará a todas las ramas de las sucursales remotas que realizan un seguimiento, no los que tienen el mismo nombre que, a continuación, configurar su rama con la información de seguimiento apropiado. (Por ejemplo, establecer branch.master.remote-origin y branch.master.merge a refs/heads/foo.)

  • Empuje manualmente. git push origin master:foo empujará su rama local master a la rama foo en el control remoto origin.

Sin embargo, me gustaría sugerir que lo que realmente desea hacer es simplemente hacer que los nombres de las sucursales de la misma.

(Puede ajustar los parámetros de configuración, ya sea con git config, por ejemplo git config push.default tracking, o editando directamente el archivo .git/config.)

+2

"git config push.default tracking" funcionó ... muchas gracias, solo curiosidad por saber ... ¿por qué tenemos que especificar esta configuración, pensé cuando clonamos usando la opción -b todo está configurado. (branch.master.remote y branch.master.merge se establecieron después del clon automáticamente) –

+1

@Senthil: Esas configuraciones se realizan automáticamente, pero el comportamiento predeterminado de push es presionar * matching * branches, no tracking branches. Por lo tanto, los ajustes solo afectan a la función de búsqueda/extracción, no a la inserción. Consulte push.default en la [página de configuración de git] (http://www.kernel.org/pub/software/scm/git/docs/git-config.html). – Cascabel

+1

¿qué hay de la rama git --set-upstream? –

0
git checkout --track origin/branchname 

O bien, puede editar el archivo de configuración en la carpeta .git.

+0

Gracias pero Definición de la URL remota es especificar el repositorio remoto para empujar, ¿cómo puedo especifique la rama remota para presionar? Dado que el nombre de mi sucursal local y el nombre de la sucursal remota son diferentes, el seguimiento de –

+0

debería ser de ayuda. Editado la respuesta. –

+0

El seguimiento no afecta al empuje por defecto. Y si la rama ya existe, 'git checkout --track' definitivamente no es la forma de configurar la información de seguimiento. – Cascabel

Cuestiones relacionadas