Quiero cambiar el destino predeterminado de la sucursal remota de Git para poder simplemente
git push
En vez 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)
git remote rm origin
Lo cual eliminó el control remoto original. Pero no resuelve el git push
problema. Todavía consigo:
fatal: Sin destino de inserción configurado. Especifique la URL desde la
línea de comandos o configure un repositorio remoto utilizando ...
También intenté jugar con:
git remote set-url --push myfork origin
y otras opciones, pero ninguna parece funcionar (¿tal vez porque eliminé el control remoto de origen demasiado pronto?)
Siguiendo la respuesta aquí intenté cambiar:
git config push.default upstream (or matching)
Pero ninguno funcionó.
fuente
git push -u <remote_name> <local_branch_name>:<corresponding_remote_branch_name>
.git push -u origin master:master
.git push
a empujar la rama remota de la rama local actual? Quiero decir que hacerlo significa que tengo que ejecutar este comando para cada rama. ¿Correcto? ¿No puedo hacer una configuración inicial para todo el repositorio? @MarcoLazzerigit push -u origin master
suficiente? ¿Estás ilustrando la sintaxis completa?Para cambiar qué control remoto ascendente está "conectado" a su rama, use el
git branch
comando con el indicador de configuración ascendente.Asegúrese de que el control remoto exista primero:
git remote -vv
Establezca el control remoto preferido para la rama actual (desprotegida):
git branch --set-upstream-to <remote-name>
Valide que la rama esté configurada con el control remoto ascendente correcto:
git branch -vv
fuente
git branch --set-upstream-to myfork
y obtuve un error:> error: opción desconocida `set-upstream-to 'Estoy ejecutando git 1.7.9git remote set-url origin PATH_TO_REMOTE
)git branch -u <remotename>/<branch>
trabajó para mi. El comando se ejecutó con la rama de interés local desprotegida. Consulte 'Rastreo de ramas' en git-scm.com/book/it/v2/Git-Branching-Remote-Branchesgit remote -v
ogit remote --verbose
. La-vv
v adicional es redundante.Trabajando con Git 2.3.2 ...
Ahora
status
,push
ypull
apuntan amyfork
remotofuente
pull
.Puede cambiar fácilmente el control remoto predeterminado para sucursales de una sola vez usando este comando
fuente
Si lo hizo
git push origin -u localBranchName:remoteBranchName
y engit push
comandos secuenciales , obtiene errores que luego el origen no existe, luego siga estos pasos:git remote -v
Comprueba si hay algún control remoto que no me importa. Eliminarlos con
git remote remove 'name'
git config --edit
Busque posibles signos de un control remoto antiguo / inexistente. Buscar
pushdefault
:Actualizar
oldremote
valor y guardar.git push
Debería funcionar ahora.fuente
-u
cuando usogit push
a un control remoto diferente debido a la memoria muscular. Esto hace que el control remoto dado sea el predeterminado, volver a configurarlo usandogit config --edit
(o presionar nuevamente y configurar un nuevo control remoto) resolvió el problema.Solo una aclaración (usando git versión 1.7.9.5 en ubuntu 12.04):
Git agregará / eliminará controles remotos. Estas son instancias remotas de git con un servidor conectado.
Luego puede buscar dicho repositorio git de esta manera:
Parece que esto crea una rama llamada 'myremote', sin embargo, el control remoto para la rama no se configura automáticamente. Para hacer esto, debe hacer lo siguiente:
Primero, verifique que tiene este problema, es decir
Deberías ver algo como:
Si ve
branch.myremote.remote=.
, entonces debe continuar:Ahora debe estar actualizado con el repositorio remoto, y sus tirones / empujes 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 The Git Config , puede configurar una rama de inserción predeterminada (solo 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á, pero solo para nuevos repositorios / sucursales. Debe recordar que
--global
establecerá los valores predeterminados del repositorio específicos del usuario (~ / .gitconfig),--system
establecerá los valores predeterminados del repositorio en todo el sistema (/ etc / gitconfig), y ningún indicador establecerá 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 de ref-spec , no el comportamiento remoto .
[1]:
git branch --set-upstream myotherremote
generalmente funcionaría aquí, sin embargo, git se quejará de que no se establecerá una rama como su propio control remoto sigit branch --set-upstream myremote
se usa. Sin embargo, creo que este es un comportamiento incorrecto.fuente
git config -l | grep myremote
, simplemente puede usar:git config --get branch.myremote.remote
--get
asume un comportamiento particular, tomo nota de que hay otras formas de configurar upstreams, pero esto proporciona una forma de encontrar la información sin depender solo de las herramientas git para ser correcto. Git no es perfecto, es mejor comprender los datos, lo que hace y luego esperar que sus invocaciones funcionen adecuadamente.Puede ser útil mirar
.git/config
dentro de su repositorio, enumerará todos los controles remotos y también el control remoto predeterminado para cada ramap.ej.
puede hacer cambios manuales en este archivo para eliminar un control remoto no deseado o actualizar los controles remotos predeterminados para las diferentes ramas que tiene
fuente
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:
fuente
git remote set-url origin PATH_TO_REMOTE
)Muy simple, y reuniendo algunos de los excelentes comentarios aquí junto con mi propia investigación sobre esto.
Primero, verifique la sucursal local que desea vincular a su sucursal remota:
Próximo:
dónde:
Deberías recibir un mensaje:
fuente
En mi caso, lo solucioné de la siguiente manera: * run
git config --edit
* En el archivo de configuración de git:fuente
git remote set-url --push origin
debería funcionar, como mencionó, pero debe proporcionar explícitamente la URL en lugar de un nombre remoto alternativo, p. ej.Puede confirmar si esto funcionó haciendo un
git remote -v
. P.ejfuente