error de git: no se pudieron enviar algunas referencias al control remoto


450

Por alguna razón, no puedo presionar ahora, mientras que podría hacerlo ayer. Tal vez me equivoqué con las configuraciones o algo así.

Esto es lo que pasa:

Cuando uso el maestro de origen git push

gitbashscr

Aspecto de mi directorio de trabajo y repositorio remoto:

Captura de pantalla de la carpeta de archivos de Windows con estos directorios: .git, css, js.  Y estos archivos: index.php, readme, setsu.php.  La palabra "local" con una flecha apunta a la carpeta css.  A continuación, captura de pantalla con el encabezado "github", y una carpeta css y un archivo index.php


77
Parece que su repositorio local no está sincronizado con el repositorio git. intentaste hacer git pull?
R11G

1
sí, pero no tengo idea con la siguiente sintaxis después de que git pull diga git pull <remote> <branch>, ¿puede dejarme ver un ejemplo de sintaxis para git pull?
leipzy

1
Verifique esta pregunta similar: stackoverflow.com/questions/18588974/…
R11G

3
@ R11G gracias señor! este enlace me ayudó a stackoverflow.com/a/18589043/3626672
leipzy

2
Recibí ese error en un nuevo repositorio. Esto ayudó: stackoverflow.com/a/6518774/2067690
HumanInDisguise

Respuestas:


619

Si el repositorio de GitHub ha visto nuevas confirmaciones, mientras trabajabas localmente, te recomendaría usar:

git pull --rebase
git push

La sintaxis completa es:

git pull --rebase origin master
git push origin master

Con Git 2.6+ (septiembre de 2015), después de haberlo hecho (una vez)

git config --global pull.rebase true
git config --global rebase.autoStash true

Un simple git pullsería suficiente.
(Nota: con Git 2.27 Q2 2020 , a merge.autostashtambién está disponible para su extracción regular, sin rebase)

De esa forma, volvería a reproducir (la --rebaseparte) sus confirmaciones locales además de la recién actualizada origin/master(o origin/yourBranch:) git pull origin yourBranch.

Vea un ejemplo más completo en el capítulo 6 Pull con rebase del Git Pocket Book .

Yo recomendaría un:

# add and commit first
git push -u origin master

Eso establecería una relación de seguimiento entre su rama maestra local y su rama aguas arriba.
Después de eso, cualquier impulso futuro para esa rama se puede hacer con un simple:

git push

Consulte " ¿Por qué necesito empujar explícitamente una nueva rama? ".


Dado que el OP ya se reinició y rehizo su confirmación además de origin/master:

git reset --mixed origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git push origin master

No hay necesidad de hacerlo pull --rebase.

Nota: git reset --mixed origin/mastertambién se puede escribir git reset origin/master, ya que la --mixedopción es la predeterminada cuando se usa git reset.


¿está bien ejecutar su sugerencia de git pull --rebase ...? porque ya hice> git reset - origen mixto / master> git add. > git commit -m "Esta es una nueva confirmación para lo que originalmente planeé ser una enmienda"> git push origin master sugirió aquí stackoverflow.com/questions/18588974/… por cierto su respuesta parece útil señor
leipzy

3
Para mí, solo necesitaba ejecutar "git commit". :(
Tyler

Gracias, solucioné un problema estúpido con Git LFS, me he rendido a tener que usar la línea de comando de ahora en adelante como resultado jaja.
Tyler C

2
Realmente super ... los siguientes comandos funcionaron para mí ... git reset - origen mixto / master git add. git commit -m "Este es un nuevo commit para lo que originalmente planeé enmendar" maestro de origen de git push Gracias @VonC
Hari Narayanan

1
Gracias funciona! ¡Estaba buscando horas para esta solución!
Redion Xhepa

96

¿Alguien intentó:

git push -f origin master

Eso debería resolver el problema.

EDITAR: Basado en el comentario de @Mehdi a continuación, necesito aclarar algo al respecto —force pushing. El comando git anterior funciona de manera segura solo para la primera confirmación. Si ya había confirmaciones, solicitudes de extracción o ramas en anteriores, esto restablece todo y lo establece desde cero. Si es así, consulte la respuesta detallada de @VonC para una mejor solución.


25
Funciona mal, por favor no lo use a menos que sepa lo que está haciendo. (probablemente no sabes lo que estás haciendo si buscas en SO)
Mehdi

3
Si va a intentarlo -f/ --forcesiempre es más seguro usarlo --force-with-lease, lo que se cancelará si hay cambios posteriores que se verían afectados por el empuje. --force-with-leasees necesario para muchas situaciones de rebase cotidianas, pero --forcecasi nunca debería ser necesario.
Joshua Goldberg el

63

Si acaba de usar git inity ha agregado sus archivos git add .o algo similar y ha agregado su rama remota, es posible que simplemente no haya comprometido ( git commit -m 'commit message') nada localmente para enviar al control remoto ... Solo tuve este error y ese fue mi problema.


1
acabo de toparme con esto. El comando commit no funcionó durante el git add. buena llamada. Gracias
jgritten

1
¡Gracias hombre! Eso es. Pensé que había cometido mis cambios. Ahora git push -u origin master funciona bien.
tleo

36

Tuve el mismo problema Estaba teniendo este problema porque no había hecho ninguna confirmación, ni siquiera la confirmación inicial, y todavía estaba tratando de presionar.

Una vez que lo hice git commit -m "your msg"y luego todo funcionó bien.


8
Eso no tiene mucho sentido. La pregunta original es sobre el git local detrás . ¡De ninguna manera "estar detrás" se puede resolver haciendo un compromiso local!
GhostCat

Oh, también me olvido de cometer: p
Shams Nahid

Esto también es posible, no le permitirá presionar con una confirmación vacía
mboy

3
Acabo de tener este problema y olvidé comprometerme. El mensaje de error debería ser más claro
Ivan Topić el

1
Se aplica a mí ya que recibí ese mensaje de error exacto y esta solución solucionó mi problema.
Diego Fortes

19

Cambie el nombre de su rama y luego presione, por ejemplo:

git branch -m new-name
git push -u new-name

Esto funcionó para mí.


1
funcionó, pero explique por qué deberíamos hacerlo
kanlukasz

Wow, esto realmente funcionó, pero ¿por qué? Tenía un guión en mi nombre rama local: my-branch_wont_push. Una vez que le cambié el nombre my_branch_wont_push, git push -u origin my_branch_wont_pushtrabajé para mí.
cdabel

13

Encuentro la solución a este problema en la ayuda de github.

Puede verlo en: Manejo de errores que no son de avance rápido

Dice:

Puede solucionar esto recuperando y fusionando los cambios realizados en la rama remota con los cambios que ha realizado localmente:

$ git fetch origin
# Fetches updates made to an online repository
$ git merge origin branch
# Merges updates made online with your local work

O simplemente puede usar git pull para ejecutar ambos comandos a la vez:

$ git pull origin branch
# Grabs online updates and merges them with your local work

1
Este es el proceso normal cuando las cosas funcionan como se esperaba. No ayuda nada cuando git piensa que ya está actualizado como @rubyandcoffee preguntó.
Tim

10
  1. git init

  2. git remote add origin https://gitlab.com/crew-chief-systems/bot

  3. git remote -v (para verificar el repositorio actual)

  4. git add -A(agregar todos los archivos)

  5. git commit -m 'Added my project'

  6. git pull --rebase origin master

  7. git push origin master


antes de empujar el código que necesita extraer del repositorio
James Siva

simplemente puedes escribir como git pull --rebase origin master
James Siva el

6

Me había enfrentado al mismo problema, solucionado con los pasos a continuación.

  1. git init
  2. git add .
  3. git commit -m 'Add your commit message'
  4. git remote add origin https://User_name@bitbucket.org/User_name/sample.git

    (Por encima de la url https: //User_name@bitbucket.org/User_name/sample.git se refiere a la url del proyecto de bit bucket)

  5. git push -u origin master

insinuación

compruebe si su cuenta de git hub se vincula con su git local utilizando:

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

4

Si está utilizando gerrit, esto podría ser causado por un Change-id inapropiado en el commit. Intente eliminar el Id. De cambio y vea qué sucede.


4

Recuerde confirmar sus cambios antes de pasar al repositorio de Github. Esto podría solucionar su problema.


4

No realizar cambios iniciales antes de presionar también causa el problema


3

antes de presionar, debe agregar y confirmar los cambios o hacer git push -f origin master


3
git push origin {your_local_branch}:{your_remote_branch}

Si su sucursal local y su sucursal remota comparten el mismo nombre, entonces puede omitir el nombre de su sucursal local, solo use git push {your_remote_branch}. De lo contrario, arrojará este error.


3

Seguí los siguientes pasos y funcionó para mí.

 rm -rf .git
 git init
 git add .
 git commit -m"first message"
 git remote add origin "LINK"
 git push -u origin master

2

Puede suceder cuando no tienes ningún archivo. Intenta crear un archivo de texto y luego sigue los siguientes comandos

git add .
git commit -m "first commit"
git push --set-upstream origin master

2

Para mí, el problema era que no agregué los archivos antes de la confirmación.

git add .

git commit -m "your msg"


2

Mejor uso rm -rf .git/hooksy luego intente git push


Interesante, me ayudó en un caso, donde claramente no hubo compromisos sobre el origen (no es necesario volver a redactar).
Pevik

¿Por qué tirarías todos tus ganchos? tal vez hacer una copia de seguridad primero?
MSpreij

2

Creé un repositorio vacío en GitHub y tengo mi código localmente. Enfrenté el mismo problema ahora, mientras seguía la secuencia a continuación,

git init
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git add .
git push -u origin master

EL PROBLEMA FUE: Traté de comprometerme antes de organizar los archivos que tengo.

Entonces, necesitamos organizar los archivos y luego comprometernos.

Esta es la secuencia correcta.

git init
git add .
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git push -u origin master

Como ejecuto primero la secuencia incorrecta, solo ejecuto los siguientes comandos

git add .
git commit -m 'Initial Commit'
git push -u origin master

1

No estoy seguro si esto aplica, pero la solución para mí fue cometer algo localmente después de git init. Luego empujé al control remoto usando --set-upstream ...


1

Creando una nueva sucursal resuelta para mí:

git checkout -b <nameOfNewBranch>

Como se esperaba, no es necesario fusionarse ya que la rama anterior estaba completamente contenida en la nueva.


1
Tuve este problema exactamente, yo estaba en feature22 y estaba haciendo git push origin feature22-fix, pero feature22-fixno salir ni local ni a distancia, así que tuve que primero la caja de la rama a nivel local, a continuación, empuje
Miel

1

Si está intentando inicializar un directorio con un repositorio GitHub existente, debe asegurarse de confirmar los cambios.

Intenta crear un archivo:

touch initial
git add initial
git commit -m "initial commit"
git push -u origin master

Eso colocará un archivo llamado inicial que puede eliminar más tarde.

Espero que esta respuesta ayude! ¡Buena suerte!


1

Necesitas dar algo de fuerza

Solo empuja - fuerza.


1

En mi caso, fue mi huskypaquete el que no permite el empuje.

> husky - pre-push hook failed (add --no-verify to bypass)
> husky - to debug, use 'npm run prepush'
error: failed to push some refs to 'https://username@bitbucket.org/username/my-api.git'

Para empujarlo con fuerza, solo corre git push origin master --no-verify

Corrí npm run prepushpara ver depurar el error, y esta fue la causa:

npm ERR! code ELOCKVERIFY
npm ERR! Errors were found in your npm-shrinkwrap.json, run  npm install  to fix them.
npm ERR!     Invalid: lock file's loopback-utils@0.8.3 does not satisfy loopback-utils@^0.9.0

Corrió npm instally lo confirmó, y el problema está solucionado.


1

Haz esto

git rm --cached *
git add .
git commit -m"upload"
git push --set-upstream origin master

¡Feliz codificación!


1

Prueba este comando git,

git push origin master –f
git push origin master --force

0

Bueno, si ninguna de las respuestas anteriores funciona y si ssh-addúltimamente has estropeado algo . Tratar

ssh-add -D

0

Para usuarios de sourcetree

Primero realice una confirmación inicial o asegúrese de que no haya cambios no confirmados, luego al lado del árbol de origen hay un "REMOTOS", haga clic con el botón derecho en él y luego haga clic en "Empujar al origen". Ahí tienes.


0

Esto me sucede ya que tenía una etiqueta con la misma que la rama y traté de empujar la rama al control remoto.


0

En mi caso, el problema era que (extrañamente) no había una rama llamada master. Tomé el repositorio de Github.


0

Estaba empujando la rama de error tipográfico 'evelop' que todavía no tenía para pagar, y en su lugar, quería empujar una rama llamada 'sobre'. Por lo tanto, la sucursal debe ser existente / pagar en la copia de trabajo local para empujar, por supuesto, ese error, no para hacer un error tipográfico.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.