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:
-
git remote -v
Si hay algún control remoto que no me importa Eliminarlos con git remote remove ''name''
-
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