Tengo un repositorio desnudo remoto hub
. Solo trabajo en la master
sucursal. La última oración de este mensaje de error a continuación me hace preguntarme: ¿cómo puedo saber cuál es el "control remoto configurado por defecto para su sucursal actual" ? ¿Y cómo lo configuro?
[myserver]~/progs $ git remote -v
hub ~/sitehub/progs.git/ (fetch)
hub ~/sitehub/progs.git/ (push)
[myserver]~/progs $ git branch -r
hub/master
[myserver]~/progs $ cat .git/HEAD
ref: refs/heads/master
[myserver]~/progs $ git pull hub
You asked to pull from the remote 'hub', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.
git
git-push
remote-branch
leonbloy
fuente
fuente
git pull hub master
?Puede hacerlo de manera más simple, garantizando que su
.gitconfig
se quede en un estado significativo:Usando Git versión v1.8.0 y superior
git push -u hub master
al empujar, o:git branch -u hub/master
O
(Esto configurará el control remoto para la rama actualmente desprotegida en
hub/master
)git branch --set-upstream-to hub/master
O
(Esto establecerá el control remoto para la rama llamada
branch_name
ahub/master
)git branch branch_name --set-upstream-to hub/master
Si estas usando
v1.7.x
o antesdebes usar
--set-upstream
:git branch --set-upstream master hub/master
fuente
set-upstream[-to]
comando cambia el control remoto configurado actualmente . El póster original preguntaba sobre el valor predeterminado control remoto configurado por . ¿Seguramente ese no es el mismo concepto?--set-upstream-to
realizó exactamente los mismos cambios.git/config
que @scragz sugirió en su respuesta .En aras de la exhaustividad: las respuestas anteriores indican cómo establecer la rama ascendente, pero no cómo verla.
Hay algunas formas de hacer esto:
git branch -vv
muestra esa información para todas las ramas. (formateado en azul en la mayoría de las terminales)cat .git/config
muestra esto también.Para referencia:
fuente
El comando para obtener el control remoto push efectivo para la rama, por ejemplo, maestro, es:
git config branch.master.pushRemote || git config remote.pushDefault || git config branch.master.remote
He aquí por qué (de la salida "man git config"):
branch.name.remote [...] le dice a git fetch y git push qué control remoto para buscar / push a [...] [for push] puede anularse con remote.pushDefault (para todas las ramas) [y] para el rama actual [..] anulada por branch.name.pushRemote [...]
Por alguna razón, "man git push" solo informa acerca de branch.name.remote (a pesar de que tiene la menor precedencia de los tres) + declara erróneamente que si no está configurado, empuja los valores predeterminados al origen; no lo hace, es solo que cuando clona un repositorio, branch.name.remote se establece en origen, pero si elimina esta configuración, git push fallará, aunque todavía tenga el origen remoto
fuente