tipos tag remove practices etiquetas crear best git git-push git-remote

tag - Cambiar el predeterminado ''push to'' de Git



git tag best practices (8)

Quiero cambiar el destino de la sucursal remota predeterminada de Git, así que podría simplemente

git push

En lugar de:

git push upstream

Actualmente esto está configurado en el control remoto de origen y quiero configurarlo en un control remoto diferente.

Traté de eliminar el control remoto original (clonado desde)

git remote rm origin

Lo cual eliminó el control remoto original. Pero no resuelve el problema de git push . Aún consigo:

fatal: ningún destino de inserción configurado. Especifique la URL de
línea de comando o configurar un repositorio remoto usando ...

También intenté jugar con:

git remote set-url --push myfork origin

y otras opciones, pero ninguna parece funcionar (¿tal vez porque eliminé el origen remoto demasiado pronto?)

Siguiendo la respuesta aquí intenté cambiar:

git config push.default upstream (or matching)

pero ninguno funcionó.


Muy simple, y reuniendo algunos de los grandes comentarios aquí junto con mi propia investigación sobre esto.

Primero, consulte la sucursal local que desea vincular a su sucursal remota:

git checkout mybranch

Siguiente:

git branch -u origin/mybranch

dónde:

git branch -u {remote name}/{branch name}

Deberías recibir un mensaje:

"Branch mybranch set up to track remote branch mybranch from origin."


Otra técnica que acabo de encontrar para resolver esto (incluso si eliminé el origen primero, lo que parece ser un error) es manipular git config directamente:

git config remote.origin.url url-to-my-other-remote


Para cambiar qué control remoto en sentido ascendente está "conectado" a su bifurcación, utilice el comando git branch con el indicador de configuración ascendente.

Asegúrese de que el control remoto exista primero:

git remote -vv

Configure el control remoto preferido para la rama actual (desprotegida):

git branch --set-upstream-to <remote-name>

Valide que la bifurcación esté configurada con el control remoto ascendente correcto:

git branch -vv


Puede cambiar fácilmente el control remoto predeterminado para las ramas de una sola vez con este comando

git push -u <remote_name> --all


Puede usar git push -u <remote_name> <local_branch_name> para establecer el valor predeterminado de subida. Consulte la documentación de git push para obtener más detalles.


Si hiciste git push origin -u localBranchName:remoteBranchName y en comandos secuencialmente git push , obtienes errores que luego el origen no existe, sigue estos pasos:

  1. git remote -v

Si hay algún control remoto que no me importa Eliminarlos con git remote remove ''name''

  1. git config --edit

Busque signos posibles de un control remoto antiguo / inexistente. Busque pushdefault :

[remote] pushdefault = oldremote

Actualice el valor oldremote y guarde.

git push debería funcionar ahora.


Solo una aclaración (usando git versión 1.7.9.5 en ubuntu 12.04):

Git agregará / eliminará los controles remotos. Estas son instancias remotas de git con un servidor adjunto.

git remote add myremote git://remoteurl

A continuación, puede buscar dicho repositorio git de la siguiente manera:

git fetch myremote

Parece que esto crea una rama llamada ''myremote'', sin embargo, el control remoto para la rama no se establece automáticamente. Para hacer esto, debe hacer lo siguiente:

Primero, verifica que tienes este problema, es decir,

git config -l | grep myremote

Deberías ver algo como:

remote.myremote.url=git://remoteurl remote.myremote.fetch=+refs/heads/*:refs/remotes/myremote/* branch.myremote.remote=. branch.myremote.merge=refs/heads/master

Si ve branch.myremote.remote=. , entonces deberías proceder:

git config branch.myremote.remote myremote git checkout myremote git pull

Ahora debe estar actualizado con el repositorio remoto, y sus tiradas / empujones deben estar vinculados al control remoto apropiado. Puede cambiar los controles remotos de esta manera, por rama . [Nota 1]

De acuerdo con la Documentación oficial de Git Config , puede configurar una rama de inserción predeterminada (simplemente busque remote.pushdefault en esa página), sin embargo, tenga en cuenta que esto no afectará a los repositorios / ramas que ya existen, por lo que esto funcionará solo para nuevos repositorios / sucursales. Debe recordar que --global establecerá los valores predeterminados del repositorio específicos del usuario (~ / .gitconfig), --system configurará los valores predeterminados del repositorio en todo el sistema (/ etc / gitconfig), y ningún indicador configurará las opciones de configuración para el repositorio actual ( ./.gitconfig).

También debe tenerse en cuenta que la opción de configuración push.default es para configurar el comportamiento ref-spec , no el comportamiento remoto .

[1]: git branch --set-upstream myotherremote generalmente funcionaría aquí, sin embargo git se quejará de que no establecerá una rama como su propio control remoto si se usa git branch --set-upstream myremote . Sin embargo, creo que este es un comportamiento incorrecto.


Trabajando con Git 2.3.2 ...

git branch --set-upstream-to myfork/master

Ahora el status , push y pull apuntan a myfork remote