fatal: el maestro de rama actual no tiene rama ascendente

227

Estoy tratando de empujar uno de mis proyectos a github, y sigo recibiendo este error:

peeplesoft@jane3:~/846156 (master) $ git push

fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

     git push --set-upstream origin master

Así que lo probé y obtuve esto:

peeplesoft@jane3:~/846156 (master) $ git push --set-upstream origin master

fatal: Authentication failed

Otro hilo de stackoverflow sugirió que intente lo siguiente, con resultados decepcionantes.

peeplesoft@jane3:~/846156 (master) $ git push -u origin master

fatal: Authentication failed

Entonces probé esto:

peeplesoft@jane3:~/846156 (master) $ git config remote.origin.push HEAD

peeplesoft@jane3:~/846156 (master) $ git push

fatal: Authentication failed

¿Alguna pista?

usuario1524361
fuente
1
El repositorio debe existir en github antes de que pueda presionarlo. ¿Lo hace? ¿Y el repositorio con el que está trabajando es un clon?
mate
Cloné el repositorio de Github, luego agregué 1 línea a un archivo Léame y luego intenté retrasarlo.
user1524361
1
recibí el mismo error porque olvidé enviar los archivos
Mateen
3
-u y --set-upstream son lo mismo
brainLoop
Quería que todos supieran los gitcomandos que el OP publicó me ayudó, incluso más que las respuestas
Nathan

Respuestas:

94

Usted arregló la inserción, pero, independientemente de ese problema de inserción (que expliqué en " ¿Por qué necesito empujar explícitamente una nueva rama? ": git push -u origin masterO git push -u origin --all), ahora necesita resolver el problema de autenticación.

Eso depende de su url (ssh como en ' [email protected]/yourRepoo https como en https://github.com/You/YourRepo)

Para la URL https:

Si su cuenta está protegida por la autenticación de dos factores , su contraseña habitual no funcionará (para https url), como se explica aquí o aquí .

Mismo problema si su contraseña contiene caracteres especiales (como en esta respuesta )

Si https no funciona (porque no desea generar una clave secundaria, una PAT: token de acceso personal), puede cambiar a ssh, como he mostrado aquí .


Como señaló qwerty en los comentarios, puede crear automáticamente la rama del mismo nombre en el control remoto con:

git push -u origin head 

¿Por qué?

  • CABEZA (ver el .git\HEADarchivo) tiene la refspec de la rama actualmente desprotegido (por ejemplo: ref: refs/heads/master)
  • la política de inserción predeterminada es simple

Dado que la especificación utilizada para este empuje es head: (sin destino), falta un :<dst>medio para actualizar la misma referencia que <src>(head, que es una rama).

Sin embargo, eso no funcionará si HEAD está separado .

VonC
fuente
1
increíble, esto es lo que necesitamos para solucionar el problema de la causa raíz, no solo solucionarlo en la superficie
workplaylifecycle
Si está en alguna sucursal, esto es útil git push origin head -u. Crea automáticamente la rama del mismo nombre en el control remoto.
Qwerty
1
@ Qwerty Gracias, buen punto. He incluido su comentario (con detalles adicionales) en la respuesta para mayor visibilidad.
VonC
115

También puede usar el siguiente comando:

git push -u origin master

Esto crea (-u) otra rama en su repositorio remoto. Una vez que se realiza la autenticación utilizando ssh, eso es todo.

TantrajJa
fuente
2
Esto es realmente relevante para el problema, ya que el problema es con la autenticación. También declaró que ya lo intentó en su publicación.
Mike Precup
2
Voté por 2 razones. 1er: el OP declaró que ya había intentado esto. 2do: la -uopción es el acceso directo para la --set-upstreamopción que no tiene nada que ver con la creación de una nueva rama. De la documentación de la opción -uu--set-upstream : "Para cada rama que esté actualizada o que se haya enviado correctamente, agregue una referencia ascendente (seguimiento), utilizada por git-pull [1] sin argumentos y otros comandos". En realidad, no entiendo por qué esta respuesta se votó tanto como es engañosa.
louisfischer
38

Aparentemente, también recibe este mensaje de error cuando olvida el --allparámetro al presionar por primera vez. escribí

git push -u origin

que dio este error, debería haber sido

git push -u origin --all

Oh, cómo amo estos errores de copiar y pegar ...

El ojo
fuente
3
Gracias. Recibí este error en Visual Studio Code y funcionó, pero en el contexto de varios desarrolladores, ¿alguien puede explicar lo que hizo?
Infierno
15

Primero debe configurar el control remoto y luego presionar.

git remote add origin url-to-your-repo

Instrucciones reales

Santosh Pillai
fuente
13

Por favor intente este escenario

git push -f --set-upstream origin master
lorem
fuente
77
Debería proporcionar más explicaciones sobre cómo y por qué esto funciona.
Benoît Latinier
66
"No está mal" es una muy mala explicación para cualquier cosa. "No está mal" hace que su respuesta sea realmente mala.
GhostCat
Esto no hace nada para solucionar el error que OP mencionó: "Falló la autenticación"
Sean the Bean
Si. A mí me funcionó. Creo que esto está obligando a comprometerse con la rama ascendente (remota).
vkg
12

Si define la acción git push, debería tomarla si no se proporciona refspec en la línea de comando, no se configura refspec en el control remoto y ninguna de las opciones dadas en la línea de comando implica ninguna refspec.

Simplemente hazlo:

git config --global push.default current

luego

git push
DariusV
fuente
1
Debe tener en cuenta que esto cambia la configuración global de git, lo que puede tener algunos efectos adversos. Pero esto era exactamente lo que estaba buscando.
Mavamaarten
@Mavamaarten ¿Cuáles son los posibles efectos adversos?
kosii
7

Bueno, estaba teniendo el mismo problema mientras cargaba y lo resolví haciendo lo mismo que dice hacer: anteriormente estaba tratando de pasar la terminal a mi repositorio en Linux por https como

git push https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git

Pero no estaba obteniendo ningún resultado y, por lo tanto, profundicé e intenté:

git push --set-upstream https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git master

Y funcionó. Por lo tanto, se le solicitará un nombre de usuario y una contraseña. También generé un token y, en lugar de Password, pegué el token y, por lo tanto, lo hice con éxito.

  1. Para generar un token, vaya a su cuenta de Github y en Configuración del desarrollador y luego cree otro token.
  2. Después de obtener eso, copie ese token y péguelo en la solicitud de contraseña cuando se le solicite.
Siddharth Choudhary
fuente
6

en un lado muy simple, una vez que tienes otras ramas, no puedes usar para empujar una rama

git push

Pero debe especificar la rama ahora, incluso si ha finalizado la compra de la rama que desea empujar, por lo que

git push origin <feature_branch>

¿Dónde puede estar incluso la masterrama

Abhishek
fuente
5

Cometí el simple error de olvidar cometer:

git commit -m "first commit"

Entonces git push origin masterfuncionó.

yllow
fuente
4

Yo tuve el mismo problema

ingrese la descripción de la imagen aquí

Lo resolví usando el siguiente comando

$ git branch --set-upstream develop origin/develop

y agregará una configuración en el archivo de configuración en la carpeta .git.

ingrese la descripción de la imagen aquí

bluetata
fuente
3

Primer uso git pull origin your_branch_name Luegouse git push origin your_branch_name

FRabbi
fuente
Lo siento si esto suena tonto. Cómo conocer el nombre de mi sucursal. Mi repositorio está en AWS.
Pravinraj Venkatachalam
Use "git branch"
Darius Miliauskas
3

Hay una solución simple para esto que funcionó para mí en macOS Sierra. Hice estos dos comandos:

git pull --rebase git_url(Ex: https://github.com/username/reponame.git)
git push origin master

Si muestra algún error fatal con respecto al flujo ascendente después de cualquier impulso futuro, simplemente ejecute:

git push --set-upstream origin master
theRana
fuente
0

1. Una computadora y su github asociados. Usa SSH. Código de computadora para que no necesite enviar verificado ingrese la descripción de la imagen aquí

2. git no puede administrar la carpeta vacía. Entonces debe escribir un archivo readme.md guardado en un archivo. De lo contrario, no encontrará el archivo.

3. Su proyecto local no es nada sobre lo que se muevan nuevos proyectos. Por favor

git init

git remote add origin +"githublink"

git add .

git commit -m "" ve otra vez.

4. entonces git pull origin master(la clave)

5. Por fin git push origin master(resolver todos los problemas).

http://my.oschina.net/psuyun/blog/123005参考 链接

王 逍遥
fuente
0

Si está intentando enviar su código directamente a la rama maestra, use el comando

git push origin master

Me ayuda.

HitechZa
fuente
0

También recibí el mismo error. Creo que fue porque lo cloné e intenté retroceder. $ git push -u maestro de origen Este es el comando correcto.

Contando objetos: 8, hecho. Compresión Delta usando hasta 2 hilos. Comprimir objetos: 100% (4/4), hecho. Escribir objetos: 100% (8/8), 691 bytes | 46.00 KiB / s, hecho. Total 8 (delta 1), reutilizado 0 (delta 0) remoto: Resolviendo deltas: 100% (1/1), hecho.

  • [nueva sucursal] maestro -> maestro Maestro de sucursal configurado para rastrear el maestro de sucursal remoto desde el origen.

    It was successful. Try to create new u branch 
    
Malsha
fuente
0

Tuve el mismo problema, la causa fue que olvidé especificar la rama

git push myorigin feature/23082018_my-feature_eb
Negro
fuente
0

Para mí, estaba impulsando los cambios a un repositorio privado al que no tenía acceso de escritura. Asegúrese de tener los derechos de acceso válidos al realizar operaciones push o pull.

Puedes verificar directamente a través de

mayank dhawariya
fuente
1
"Verificar directamente a través de" ¿qué?
Mike Poole
0

Para mí, fue porque había eliminado la carpeta oculta .git .

Lo arreglé eliminando la carpeta, volviendo a clonar y volviendo a hacer los cambios.

AmmarBaali
fuente
0

Si está en alguna sucursal, puede usar esto:

git push origin head -u

Esto creará automáticamente una nueva rama del mismo nombre en el control remoto.

QWERTY
fuente
-1

Para resolver este problema, mientras revisa el código de gitsí mismo, debe dar el comando como se muestra a continuación:

git checkout -b branchname origin/branchname

Aquí, de forma predeterminada, estamos configurando the upstream branch, por lo que no enfrentará el problema mencionado.

Deepa
fuente
-2

Para mí, el problema proviene del nombre de mi sucursal: "# name-of-my-branch", sin "#" ¡funciona bien!

aurelienv
fuente