El mensaje 'src refspec master no coincide con ninguno' al presionar commits en Git

2692

Clono mi repositorio con:

git clone ssh://xxxxx/xx.git 

Pero después de cambiar algunos archivos y adde commitellos, quiero empujar al servidor:

git add xxx.php
git commit -m "TEST"
git push origin master

Pero el error que vuelvo es:

error: src refspec master does not match any.  
error: failed to push some refs to 'ssh://xxxxx.com/project.git'
sinoohe
fuente
26
@Marco Eso no es un duplicado. Ese es un problema muy específico acerca de empujar una sucursal local a una sucursal remota. Este se trata de inicializar un repositorio y empujarlo hacia arriba. Producen el mismo error, pero las RAZONES por las que producen ese error y las soluciones son completamente diferentes. Además, sinoohe, debes aceptar una respuesta. Probablemente el primero, ya que responde a la pregunta y ha ayudado a más de 350 personas.
tandrewnichols
¿Configuró sus comandos git config para instalar y configurar git globalmente en su máquina?
IgorGanapolsky el
1
Espero que este post sería útil somebody- samranga.blogspot.com/2015/07/... El error en la pregunta se pueden hacer estallar incluso cuando trató de crear un repositorio git BitBucket de un proyecto ya existente a nivel local
Samitha Chathuranga
Recibí este error al intentar presionar el nombre de rama incorrecto. Resuelto usando git statuspara obtener el correcto.
Tom Howard
55
Otra tarea simple que Git hizo difícil. Los desarrolladores de Git deben usar Stack Overflow como comentarios en su bucle SDLC. Más de 850,000 personas deberían indicar que algo está muy mal con el flujo de trabajo de Git. Necesitan contratar a un experto en UX porque claramente no pueden hacerlo bien por sí mismos.
jww

Respuestas:

4143

Quizás solo necesites comprometerte. Me encontré con esto cuando hice:

mkdir repo && cd repo
git remote add origin /path/to/origin.git
git add .

¡Uy! Nunca comprometido!

git push -u origin master
error: src refspec master does not match any.

Todo lo que tuve que hacer fue:

git commit -m "initial commit"
git push origin master

¡Éxito!

baisong
fuente
130
No solo siga este paso a ciegas, mire lo que @Vi ha mencionado y luego modifique su comando push para corregir la referencia.
Kumar
49
La razón más probable de este error es que todos los archivos no están rastreados y no se han agregado. git add --allen caso de que desee agregar todos los archivos o puede agregar archivos selectivamente. A continuación git commit -m "Initial comment", git push origin master. Esto seguramente funcionará.
Bhanu Pratap Singh
66
Soluciona un problema diferente que es agradable pero no es realmente una respuesta a esta pregunta real.
Michael Durrant
77
git commit -m 'initial commit'debe ser doblemente citado. ' git commit -m "initial commit", al menos en las ventanas.
dance2die
55
Otra posible razón: en realidad no tienes una rama llamada master
CarlosAS
843
  1. Intenta git show-refver qué referencias tienes. ¿Hay un refs/heads/master?

  2. Puede intentarlo git push origin HEAD:mastercomo una solución más independiente de referencia local. Esto indica explícitamente que desea insertar la referencia local HEADen la referencia remota master(consulte la documentación de la especificación de referencia git-push ).

Vi.
fuente
66
¡mi rama maestra no estaba al tanto de los commits! así que creé una rama que estaba al final de todas las ramas y las empujé al servidor:
sinoohe
10
git checkout -b testbranch; git push origin testbranch: maestro
sinoohe
101
git show-refmostró mi rama; El git push origin HEAD:<branch>funcionó para mí.
Glen Solsberry
55
Me acabas de salvar Vi. Gracias por usted git push origin HEAD:master. ¿Pero por qué algo así git push --force origin masterno funciona?
shkschneider
44
@ gms8994: tienes razón. si alguien crea una rama como primera cosa en lugar de presionarlo en master, unfriendlyaparece el mismo error. use en git push origin <branch>lugar de masteren caso de que intente hacerlo git checkout -b <branch>antes de cualquier PRIMER impulso después de la inicialgit remote add origin <url>
asyncwait
225

También tuve un error similar después de eliminar todos los archivos en mi computadora local, y tengo que limpiar todos los archivos en el repositorio.

Mi mensaje de error fue algo como esto:

error: src refspec master does not match any.
error: failed to push some refs to 'git@github ... .git'

Y se resolvió ejecutando los siguientes comandos:

touch README
git add README

git add (all other files)
git commit -m 'reinitialized files'
git push origin master --force  # <- caution, --force can delete others work.
Ario
fuente
10
Las otras respuestas no resolvieron el problema que estaba teniendo (por ejemplo, ya me había comprometido y todavía tenía este error), pero estaba git push origin BRANCH --forcefuncionando. ¡Gracias!
Lemmings19
Ver esta respuesta anterior . Sospecho que necesitabas agregar un archivo porque git no rastreará directorios vacíos.
3
push --force también podría eliminar por completo el trabajo duro de los compañeros de trabajo. Advertencia añadida por él.
Michael Durrant
3
Esto resolvió mi problema. Creo que git add lo hizo. Si bien presionar las cosas a primera vista no reconoce las cosas, puede ser por eso que tuve el problema. El comando git add resolvió mi problema. También después de eso pude empujar sin --force. Gracias Aryo
Anandaraja_Srinivasan
203
  1. Mis cambios ya estaban comprometidos
  2. Force push todavía me dio el mismo error.

Así que probé la solución de Vi :

git push origin HEAD:<remoteBranch> 

Esto funcionó para mí.

tldr
fuente
19
Finalmente descubrí que fue porque escribí mal el nombre de la sucursal. Empujé con éxito la rama A al origen con una rama llamada B con git push origin HEAD:B, pero todavía recibí el mismo error cada vez que presioné con la git push originrama A.
Yi H.
1
@YiHuang, gracias, revisé el nombre de mi sucursal antes, y luego volví a revisarlo debido a tu comentario: tuve el mismo problema, lo escribí mal.
Lakesare
1
@ YiH.i estaba seguro de que el nombre de mi sucursal es correcto, pero lo volví a comprobar después de leer tu comentario y mi error tiene el mismo problema.
Puntero nulo
125
git push -u origin master
error: src refspec master does not match any.

Para eso, debe ingresar el mensaje de confirmación de la siguiente manera y luego presionar el código:

git commit -m "initial commit"

git push origin master

Empujado con éxito para dominar.

VIKAS KOHLI
fuente
Verifiqué que está funcionando.
Ignore la
El problema aquí parece ser completamente diferente al de los OP ... pero parece que muchos, incluido yo, tuvieron este problema.
ZX9
110

Para mí, tuve que asegurarme de que la clave pública esté configurada correctamente en el servidor (agregada en ~ / .ssh / Authorizedkeys) y en GitHub / Bitbucket (agregada a mis claves SSH en GitHub o Bitbucket): deben coincidir.

Entonces:

git add --all :/

git commit -am 'message'

git push -u origin master

Al final funcionó para mí.

rojo
fuente
88

Descubrí que esto sucedió en un nuevo repositorio después de que Git agregara solo un directorio.

Tan pronto como agregué un archivo (por ejemplo, un archivo README), Git push funcionó muy bien.

Andrew E
fuente
66
Esto probablemente funciona porque git en realidad no rastrea directorios, solo archivos. Entonces, si un directorio está vacío, git no lo agregará realmente.
1
El OP agregó un archivo (xx.php), por lo que este no fue el problema en este caso, aunque en otros casos puede ser un problema y agregar un archivo es una solución a ese problema.
Michael Durrant
1
Una solución tan simple para un problema frustrante. Estaba probando la creación y clonación de repositorios y creé directorios vacíos, no archivos.
James Wierzba
1
¡8 años después, esto me ahorró un poco de dolor de cabeza!
rvictordelta
En mi caso, 1 -> git init 2 ---> git add origin .... etc 3 ---> git git push -u origin master ===> Luego obtuve el error anterior. ===> Luego ejecuté los siguientes 2 comandos, desapareció. ---> git add * ---> git commit -m "Algún mensaje" ---> git git push -u origin master ===> Funcionó bien para mí, en mi caso.
Rao
67

Falta o salta git add .o git commitpuede causar este error:

git push -u origin master
Username for 'https://github.com': yourusername
Password for 'https://[email protected]': 
error: src refspec master does not match any.
error: failed to push some refs to 'https://github.com/yourusername/foobar.git'

Para solucionarlo, reinicialice y siga la secuencia adecuada:

git init
git add .
git commit -m 'message'
git *create remote
git push -u origin master
aug2uag
fuente
Eso es correcto, el final del negocio es más específicamente git remote add __REMOTE_NAME__ __URL_OR_SSH__, y por encima del nombre remoto es "origen"
aug2uag
1
Agregaron y se comprometieron en su pregunta, por lo que ese no era el problema, aunque esto ayuda a otras personas.
Michael Durrant
Sin embargo, esta respuesta funcionó debido a la -uopción que se usó aquí.
Michael Durrant
63

Para solucionarlo, reinicialice y siga la secuencia de código adecuada:

git init
git add .
git commit -m 'message'
git push -u origin master
pratik kumar
fuente
55

Asegúrate de haber agregado primero y luego commit / push:

Me gusta:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master
Saurabh Singh
fuente
44

Me enfrenté al mismo problema y solía --allow-empty:

$ git commit -m "initial commit" --allow-empty
...
$ git push
...

Suplemento

Una de las principales razones de este problema es que algunos servidores Git, como BitBucket, no tienen su masterrama inicializada cuando se clona un repositorio nuevo.

Jin Kwon
fuente
43

Esto también sucede cuando estás en una rama específica e intentas impulsar otra rama que aún no existe, como:

$ git branch
* version-x  # you are in this branch
  version-y

$ git push -u origin master
error: src refspec master does not match any.
error: failed to push some refs to 'origin_address'
wilsonfoz
fuente
3
Jajaja Estaba tratando de empujar al maestro de origen, pero esa rama no existía. Fue llamado origen estable.
Penner
1
El -upuede haber ayudado aquí.
Michael Durrant
1
En el caso anterior, el problema es, por supuesto, que no hay una sucursal local master, por lo que no puede empujarla. Usted quiere empujar una rama existente, o crear la rama maestra y luego empujarla, así:git checkout -b master; git push -u origin master;
tanius
44
Acabo de recibir esto cuando escribí mal el nombre de la sucursal.
Sebastian Ärleryd
2
Mi sucursal local se deletreaba "s h eduler" y lo estaba haciendo git push origin scheduler. ¡DECIR AH! Una carta de descuento te matará en la programación. lol
protoEvangelion
35

Para mí, lo siguiente funcionó para mover archivos sin seguimiento:

git add --all

Luego, seguí pasos similares

 git commit -m "First commit"

Entonces,

git remote add origin git@github.....

Por último pero no menos importante:

git push -u origin master

Al hacerlo, aparecerá la seguridad de Windows pidiéndole su nombre de usuario y contraseña.

Areeha
fuente
1
quiso decir 'git add --todos` con dos guiones
Abdallah Abdillah
29

En mi caso, olvidé incluir el .gitignorearchivo. Aquí están todos los pasos necesarios:

  1. Crea un repositorio Git vacío en remoto,
  2. En local, cree el archivo .gitignore para su proyecto. GitHub te da una lista de ejemplos aquí
  3. Inicie una terminal y en su proyecto realice los siguientes comandos:

    git remote add origin YOUR/ORIGIN.git
    
    git add .
    
    git commit -m "initial commit or whatever message for first commit"
    
    git push -u origin master
    
Ismail H
fuente
¿Cómo es este el error en cuestión relacionado con .gitignore? Si está relacionado (lo cual dudo mucho), debe explicarlo en su respuesta. Gracias
pedram bashiri
26

Simplemente agregue una confirmación inicial. Sigue estos pasos:

  • git add .

  • git commit -m "initial commit"

  • git push origin master

Esto funcionó para mí.

NeeruKSingh
fuente
24

Mi problema era que la rama 'maestra' aún no se había creado localmente.

Un rápido

git checkout -b "master"

creó la rama maestra, en cuyo punto, un rápido

git push -u origin master

empujó el trabajo al repositorio de Git.

Antonio
fuente
22

Probablemente olvidaste el comando "git add". después del comando "git init".

Sumeria
fuente
Además, git commitpor supuesto ...
Bill
20

También seguí las instrucciones de GitHub de la siguiente manera, pero aún me enfrento al mismo error mencionado por el OP:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master

Para mí, y espero que esto ayude un poco, estaba empujando un archivo grande (1.58 GB on disk)en mi MacOS. Mientras copiaba y pegaba la línea de códigos sugerida arriba, no estaba esperando que mi procesador realmente terminara el add .proceso. Entonces cuando escribígit commit -m "message" , básicamente no hacía referencia a ningún archivo y no ha completado lo que sea necesario para confirmar con éxito mi código en GitHub.

La prueba de esto es que cuando escribo git statususualmente obtengo fuentes verdes para los archivos agregados. Pero todo estaba rojo. Como si no se hubiera agregado en absoluto.

Así que rehice los pasos. Escribí git add .y esperé a que los archivos terminaran de agregarse. Luego seguí los siguientes pasos.

Gel
fuente
19

Esto solo significa que olvidó hacer la confirmación inicial, intente

git add .
git commit -m 'initial commit'
git push origin master
xuri
fuente
por favor escriba git commit -m "commit inicial"
Yash Agrawal
19
  1. Primero, git add .
  2. Segundo, git commit -m "message"
  3. Tercero, git push origin branch

Verifique si hay errores ortográficos porque eso también podría dar ese error.

Alwan Mortada
fuente
18

Tuve el mismo problema cuando no pude correr:

git add .

(Debe tener al menos un archivo, o recibirá el error nuevamente).

neoDev
fuente
18

Ocurre si olvida comprometerse antes de presionar por primera vez. Solo corre:

git commit -m "first commit"
Badr Bellaj
fuente
17

Para comprobar el estado actual, git status.

Y siga estos pasos también:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master
Dinith
fuente
16

Esto sucede cuando ha agregado su archivo, olvidó comprometerse y presionar. Así que confirme los archivos y luego presione.

user993563
fuente
14

Yo tuve el mismo problema. Lo hice siguiendo los siguientes pasos:

1. git commit -m 'message'
2. git config --global user.email "your mail"
3. git config --global user.name "name"
4. git commit -m 'message'
5. git push -u origin master
usuario3051460
fuente
14

Si recibe este error mientras trabaja en modo HEAD separado, puede hacer esto:

git push origin HEAD:remote-branch-name

Ver también: Hacer un empujón Git desde una cabeza separada

Si está en una sucursal local diferente a la sucursal remota, puede hacer esto:

git push origin local-branch-name:remote-branch-name
chasquido
fuente
13

En el escenario donde revisa el código de un repositorio externo (GitHub) y desea importarlo en un sistema personal / interno, este comando realmente brilla:

git push --all origin

Esto empuja todas las sucursales locales al control remoto, sin verificar las referencias y sin insistir en las confirmaciones.

d.raev
fuente
12

Esto también sucederá si tiene un error tipográfico en el nombre de la sucursal que está intentando insertar.

Gavin
fuente
2
¡Sospecho que muchos de nosotros que vinimos aquí a través de la búsqueda web realmente escribimos mal el nombre!
sabio
12
git add .

es todo lo que necesitas. Ese código rastrea todos los archivos no rastreados en su directorio.

Cazador
fuente
10

En caso de que esté enfrentando este problema incluso después de hacer git inity empujar su confirmación inicial. Luego puedes probar lo siguiente,

git checkout -b "new branch name"
git push origin "new branch name"

Su código será empujado como una nueva rama.

Govind
fuente