Tengo un servidor de gitosis remoto y un repositorio local de git, y cada vez que hago un gran cambio en mi código, también enviaré los cambios a ese servidor.
Pero hoy encuentro que a pesar de que tengo algunos cambios locales y me comprometo con el repositorio local, cuando lo ejecuta git push origin master
dice 'Todo actualizado', pero cuando uso git clone
para retirar archivos en el servidor remoto, no contiene los últimos cambios . Y solo tengo una rama llamada "maestro" y un servidor remoto llamado "origen".
PD: Esto es lo que muestra git cuando se ejecuta ls-remote
, no estoy seguro de si ayuda
$ git ls-remote origin
df80d0c64b8e2c160d3d9b106b30aee9540b6ece HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
$ git ls-remote .
49c2cb46b9e798247898afdb079e76e40c9f77ea HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/remotes/origin/master
3a04c3ea9b81252b0626b760f0a7766b81652c0c refs/tags/stage3
commit
que no noté e intenté presionar el códigoRespuestas:
¿Estás trabajando con una cabeza separada por casualidad?
Como en:
indicando que su último commit no es un encabezado de rama.
Advertencia : lo siguiente hace lo siguiente
git reset --hard
: asegúrese de usargit stash
primero si desea guardar sus archivos modificados actualmente.Como se menciona en la
git checkout
página de manual (énfasis mío):fuente
Step 1: git fetch origin git checkout -b "nodeAPI" "origin/nodeAPI" Step 2. Review the changes locally Step 3. Merge and fix conflicts git fetch origin git checkout "origin/master" git merge --no-ff "nodeAPI" Step 4. Push the result of the merge to GitLab git push origin "master"
estoy bien hasta el último paso. Pero ahora estoy confundido sobre cómo avanzar.git branch -f myBranch HEAD
luego revisa dicha sucursal y empújala. En su caso,myBranch
podría sermaster
si estuviera en el proceso de fusiónnodeAPI
.Err .. Si eres un novato git, ¿estás seguro de que lo has hecho
git commit
antesgit push
? ¡Cometí este error la primera vez!fuente
git commit -a -m "your message goes here"
en mi casogit add -A
,git diff --staged
, desplaza a través de cambios HMM un aspecto muy bueno,git commit -m 'bam!'
,git push
Tal vez estás empujando una nueva sucursal local?
Una nueva sucursal local debe ser empujada explícitamente:
Solo una de esas cosas sobre git ... Clonas un repositorio, haces una rama, comprometes algunos cambios, presionas ... "Todo está actualizado". Entiendo por qué sucede, pero este flujo de trabajo es extremadamente hostil para los recién llegados.
fuente
Mi problema era que mi sucursal local tenía un nombre diferente al de la sucursal remota. Pude empujar haciendo lo siguiente:
$ git push origin local-branch-name:remote-branch-name
(Crédito a https://penandpants.com/2013/02/07/git-pushing-to-a-remote-branch-with-a-different-name/ )
fuente
Otra situación que es importante tener en cuenta: el tipo de estado predeterminado para git es que está trabajando en la rama "maestra". Y para muchas situaciones, simplemente pasarás el rato como tu rama principal de trabajo (aunque algunas personas se vuelven elegantes y hacen otras cosas).
De todos modos, esa es solo una rama. Entonces, una situación en la que podría entrar es:
Mi rama activa NO es la rama maestra. ... Pero habitualmente hago el comando:
git push
(y lo había hecho anteriormentegit push origin master
, así que es un atajo para ESO).Así que habitualmente estoy empujando la rama maestra al repositorio compartido ... lo cual es probablemente una buena cosa limpia, en mi caso ...
¡Pero he olvidado que los cambios en los que he estado trabajando aún no están EN la rama maestra!
Por lo tanto, cada vez que lo intento
git push
y veo "Todo actualizado", quiero gritar, pero, por supuesto, ¡no es culpa de Git! Es mio.Entonces, en cambio, fusiono mi rama en maestra, y luego empujo, y todo vuelve a ser feliz.
fuente
git push
.Explicación
Tuve el mismo error y pasé horas tratando de resolverlo. Finalmente lo encontré. Lo que no sabía es que presionar de esta manera
git push origin branch-x
intentará buscar la rama-x localmente y luego presionar a la rama-x remota.En mi caso, tenía dos URL remotas. Hice un pago desde branch-x a branch-y cuando intentaba pasar de y localmente a x control remoto, recibí el mensaje de que todo está actualizado, lo cual es normal porque estaba presionando x del segundo control remoto.
En pocas palabras, para no caer en este tipo de trampa, debe especificar la referencia de origen y la referencia de destino:
Actualizar:
Si tiene que ejecutar este comando cada vez que empuja su rama, tal vez necesite configurar el flujo ascendente entre su rama local y remota con lo siguiente:
O
fuente
Vea la respuesta de VonC arriba: necesitaba un paso adicional:
Hice esto, pero cuando lo intenté
git push remoterepo master
, dijo "error: no pude empujar algunas referencias. Para evitar que pierdas el historial, se rechazaron las actualizaciones no rápidas, combina los cambios remotos (por ejemplo, 'git pull') antes empujando de nuevo ".Así que hice 'git pull remoterepo master', y encontré un conflicto. Lo hice
git reset --hard <commit-id>
de nuevo, copiar los archivos en conflicto a una carpeta de copia de seguridad, logit pull remoterepo master
nuevo, copiados los archivos en conflicto de nuevo en mi proyecto, lo hicegit commit
, entoncesgit push remoterepo master
, y esta vez funcionó.Git dejó de decir 'todo está actualizado' y dejó de quejarse de 'avances rápidos'.
fuente
Me he enfrentado a una situación similar; Cuando hice los cambios y traté de hacerlo
git push origin master
, decía que todo estaba actualizado.Tuve que
git add
cambiar el archivo y luegogit push origin master
. Comenzó a funcionar a partir de entonces.fuente
git commit
que agregar ese archivo antes de presionar?Desde su estado de git, probablemente tenga una situación diferente a la mía.
Pero de todos modos, esto es lo que me pasó ... Encontré el siguiente error:
El mensaje más informativo aquí es que el control remoto colgó. Resultó que se debe a que excede el tamaño del búfer de la publicación http. La solución es aumentarlo con
git config http.postBuffer 524288000
fuente
Tuve este problema hoy y no tenía nada que ver con ninguna de las otras respuestas. Esto es lo que hice y cómo lo arreglé:
Un depósito mío recientemente se mudó, pero tenía una copia local. Me ramifiqué de mi rama "maestra" local e hice algunos cambios, y luego recordé que el repositorio se había movido. Solía
git remote set-url origin https://<my_new_repository_url>
configurar la nueva URL, pero cuando la empujaba solo decía "Todo actualizado" en lugar de presionar mi nueva rama para dominar.Terminé resolviéndolo rebasando
origin/master
y luego presionando con nombres de rama explícitos, como este:¡Espero que esto ayude a cualquiera que haya tenido mi mismo problema!
fuente
Súper raro, pero aún así: en Windows, es posible que las referencias empaquetadas tengan una rama con mayúsculas y minúsculas (es decir, dev / mybranch), mientras que la carpeta de referencias tiene otro caso (es decir, Dev / mybranch) cuando core.ignorecase está establecido en verdadero .
La solución es eliminar manualmente la fila relevante de las referencias empaquetadas . No encontré una solución más limpia.
fuente
Me encontré con esto cuando fusioné una rama en Github y continué desarrollándome localmente. Mi solución fue un poco diferente a las otras que se han sugerido.
Primero ramifiqué una nueva sucursal local de mi antigua sucursal local (que no podía empujar). Luego empujé la nueva sucursal local al servidor de origen (Github). Es decir
Esto hizo que los cambios aparecieran en Github, aunque en newlocalbranch en lugar de oldlocalbranch.
fuente
En mi caso tuve 2 repositorios remotos.
Ambos repositorios eran iguales. Solo uno era
https
otro erassh
. Entonces, eliminar el no deseado (en mi caso, ¡ssh
ya que lo uséhttps
porquessh
no funcionaba!) Solucionó el problema.fuente
Mi error fue diferente a todo lo mencionado hasta ahora. Si no tienes idea de por qué tendrías una cabeza separada, entonces probablemente no. Estaba trabajando en piloto automático con
git commit
ygit push
, y no había leído el resultadogit commit
. Resulta que fue un mensaje de error porque olvidé -am.Lo solucioné colocando
-am
donde normalmente hago:fuente
Me he enfrentado al mismo problema. Como no agregué cambios al área de preparación. E intenté directamente empujar el código al repositorio remoto usando el comando:
git push origin master
Y muestra el mensaje
Everything up-to-date
.Para solucionar este problema, prueba estos pasos
git add .
git commit -m "Bug Fixed"
git push -u origin master
fuente
Verifique que no haya engañado su URL remota.
Solo quería mencionar que me encontré con esto después de habilitar Git como CVS en una configuración de compilación local de Jenkins. Parece que Jenkins revisó la confirmación más reciente de la rama que le di y también restableció mi control remoto para que se corresponda con las rutas que le di al repositorio. Tuve que revisar mi rama de características nuevamente y corregir mi URL remota de origen con 'git remote set-url'. No apunte una herramienta de compilación a su directorio de trabajo o lo pasará mal. Mi control remoto se configuró en una ruta de archivo a mi directorio de trabajo, por lo que, naturalmente, informó todo actualizado cuando intenté enviar cambios con el mismo origen y destino.
fuente
Otra posibilidad es que haya nombrado un directorio en su archivo .gitignore que se excluyó. Entonces los nuevos commits no serían empujados. Me ocurrió que nombré un directorio para ignorar "búsqueda", pero ese también era un directorio en mi árbol de origen.
fuente
Hay una forma rápida que encontré. Vaya a su carpeta .git, abra el
HEAD
archivo y cambie la rama en la que estaba nuevamente a master. Por ejemplo, ref:refs/heads/master
fuente
refs/heads/master
romper mi repositorio. Pero ajustarlo a lo que pensaba ser la cabeza commit dio el siguiente mensaje:Warning: you are leaving 1 commit behind, not connected to any of your branches
. Pude llevar el compromiso a una nueva rama y fusionarlo con el maestro.Tuve el mismo problema. En mi caso fue causado por tener que nombrar el mismo control remoto. Creó el 'origen' estándar, pero he estado usando 'github' como mi control remoto durante mucho tiempo, por lo que también estaba allí. Tan pronto como eliminé el control remoto 'origen', el error desapareció.
fuente
Esto sucedió (las confirmaciones en mi registro de git no estaban en GitHub a pesar de que git dijo que todo estaba actualizado) y estoy seguro de que el problema era Github. No recibí ningún mensaje de error en git, pero GitHub tenía errores de estado y mis confirmaciones estaban allí varias horas después.
https://status.github.com/messages
Los mensajes de estado de GitHub fueron:
fuente
Otro error mío muy simple pero novato: simplemente olvidé agregar un
-m
modificador de mensaje en mi confirmación. Entonces escribí:En lugar de correcto:
NOTA: ¡NO arroja ningún error! Sin embargo, usted no será capaz de empujar sus compromete y siempre consigue
Everything up to date
vezfuente
aquí, mi solución es diferente a la anterior. No he descubierto cómo ocurre este problema, pero lo arreglé. un poco inesperado
ahora viene camino:
el comando que funciona para mí es
$git push origin HEAD:use_local_cache
(Espero que salgan de este problema lo antes posible)
fuente
Sé que es súper viejo, pero en mi caso lo arreglé bastante rápido.
Estaba recibiendo este mismo error mientras estaba un compromiso antes
master
. Luego encontré la publicación actual de desbordamiento de pila. Sin embargo, antes de continuar con las ideas sugeridas, decidí hacer una nueva confirmación e intentar nuevamente con el impulso al origen y funcionó sin problemas.No sé por qué, pero tal vez sea útil para alguien más.
fuente
Otra posibilidad es que tenga commits que no afecten el directorio que está empujando. Entonces en mi caso tenía una estructura como
Y me comprometí a modificar el master
README.md
, luego corrígit subtree push --prefix client heroku-client master
y recibí el mensajeEverything up-to-date
fuente
Estaba trabajando con Jupyter-Notebook cuando encontré este error engañoso.
No pude resolver a través de las soluciones proporcionadas anteriormente, ya que no tenía una cabeza separada ni tenía nombres diferentes para mi repositorio local y remoto .
Pero lo que sí tuve fue que el tamaño de mis archivos era ligeramente mayor a 1 MB y el más grande era casi ~ 2 MB . Reduje el tamaño del archivo usando ¿Cómo puedo reducir el tamaño del archivo de mi notebook iPython?técnica. Ayudó a reducir el tamaño de mi archivo al borrar las salidas. Pude insertar el código, en adelante, ya que traía el tamaño de mi archivo en KB.
fuente
Necesitamos agregar los archivos y confirmar que los archivos ya cambiados / agregados se ejecutan a continuación.
git add. o git add nameoffile #it agregará los archivos existentes en el proyecto
git commit -m "primer compromiso" # comprometiendo todos los archivos en el proyecto
maestro de origen git push
fuente