tag remove fusiĆ³n delete contenido conflictos conflicto como git

remove - No puedo empujar a GitHub-sigue diciendo que hay que fusionar



push tag github (30)

Soy nuevo en GitHub . Hoy me encontré con un problema cuando intentaba enviar mi código a GitHub.

Pushing to [email protected]:519ebayproject/519ebayproject.git To [email protected]:519ebayproject/519ebayproject.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to ''[email protected]:519ebayproject/519ebayproject.git'' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Merge the remote changes (e.g. ''git pull'') hint: before pushing again. hint: See the ''Note about fast-forwards'' in ''git push --help'' for details.

Todavía no he introducido nada en el repositorio, ¿por qué necesito sacar algo?


Esto puede hacer que el repositorio remoto pierda confirmaciones; Úsalo con cuidado.

Si no desea fusionar la rama remota en su rama local (vea las diferencias con git diff ), y desea hacer un empuje forzado, use el comando push con -f

git push -f origin <branch>

donde origin es el nombre de su repositorio remote .

Generalmente, el comando se niega a actualizar una referencia remota que no es un antecesor de la referencia local utilizada para sobrescribirla. Esta bandera desactiva el cheque. Esto puede hacer que el repositorio remoto pierda confirmaciones; Úsalo con cuidado.


Otra opción: renombrar localmente tu rama a algo nuevo.

Entonces podrá enviarlo al repositorio remoto, por ejemplo, si esa es su forma de mantener una copia (copia de seguridad) y asegurarse de que no se pierda nada.

Puede obtener la rama remota para tener una copia local y examinar las diferencias entre (i) lo que tenía el control remoto (con el nombre de la rama anterior) y (ii) lo que tiene (con el nombre de la nueva rama), y decidir qué hacer . Como no era consciente de las diferencias del control remoto en primer lugar (de ahí el problema), simplemente fusionar o forzar cambios en algún lugar es demasiado brutal.

Observe las diferencias, elija en qué rama desea trabajar, seleccione los cambios de selección de cerebros que desee de la otra rama o revertir los cambios que no desea en la rama que tiene, etc.

Entonces debe estar en condiciones de decidir si desea forzar su versión limpia en el control remoto, o agregar nuevos cambios, o lo que sea.


¿Su nombre de rama es el mismo que el nombre de la rama remota?

Si no, debería retirar una nueva sucursal con el mismo nombre que la sucursal remota y volver a intentarlo.

Supongamos que la rama remota que desea enviar está [ probando ] y su sucursal local recibe el nombre de [ prueba ].

Si no estás en la rama de prueba , primero cambia.

git checkout test

Luego abre una nueva rama y nómbrela a prueba .

git checkout -b testing

Ahora es el momento de empujarlo:

git push [remote repo] testing


¿Has actualizado tu código antes de empujar?

Usa git pull origin master antes de empujar cualquier cosa.

Supongo que está utilizando origin como nombre para su control remoto.

Necesitas presionar antes de empujar, para que tu repositorio local esté actualizado antes de empujar algo (en caso de que alguien más haya actualizado el código en github.com ). Esto ayuda a resolver conflictos localmente.


A veces olvidamos el tirón e hicimos muchos trabajos en el entorno local.

Si alguien quiere empujar sin tirar,

git push --force

está trabajando. Esto no se recomienda cuando se trabaja con otras personas, pero cuando su trabajo es algo simple o un proyecto de juguete personal, será una solución rápida.


Además de las respuestas anteriores, lo siguiente funcionó para mí:

Escenario -

  1. Empujé my_branch a origen con éxito.
  2. Hice algunos cambios más.
  3. Cuando intenté volver a presionar (después de hacer agregar, confirmar, por supuesto), obtuve el error mencionado anteriormente.

Solución -

1. git checkout **my_branch** 2. git add, commit your changes. 3. git pull origin **my_branch** (not origin, master, or develop) 4. git push origin **my_branch**


Algunos de ustedes pueden estar recibiendo este error porque Git no sabe qué rama está intentando impulsar.

Si tu mensaje de error también incluye

error: failed to push some refs to ''[email protected]:jkubicek/my_proj.git'' hint: Updates were rejected because a pushed branch tip is behind its remote hint: counterpart. If you did not intend to push that branch, you may want to hint: specify branches to push or set the ''push.default'' configuration hint: variable to ''current'' or ''upstream'' to push only the current branch.

entonces es posible que desee seguir los útiles consejos de Jim Kubicek, Configurar Git para solo empujar la rama actual , para establecer la rama predeterminada en la actual.

git config --global push.default current


Como el mensaje te dice,

Combinar los cambios remotos (por ejemplo, ''git pull'')

Use git pull para extraer los últimos cambios del repositorio remoto a su repositorio local. En este caso, la extracción de cambios requerirá una fusión porque ha realizado cambios en su repositorio local.

Daré un ejemplo y una imagen para explicar. Supongamos que su último tirón desde el origen / rama fue en Commit B. Ha completado y realizado algunos trabajos (Commit C). Al mismo tiempo, alguien más ha completado su trabajo y lo ha enviado a origen / sucursal (Compromiso D). Será necesario que haya una fusión entre estas dos ramas.

local branch: --- Commit C / / / origin/branch: Commit A ------ Commit B ---- Commit D

Debido a que usted es el que quiere presionar, Git lo obliga a realizar la fusión. Para hacerlo, primero debe extraer los cambios de origen / rama.

local branch: --- Commit C -- Commit E / / / / / / origin/branch: Commit A ------ Commit B ---- Commit D

Después de completar la combinación, ahora se le permitirá avanzar rápidamente en el origen / rama a Commit E presionando sus cambios.

Git requiere que usted maneje las fusiones, porque una fusión puede llevar a conflictos.


El problema con el comando push es que su repositorio local y remoto no coincide. Si inicia el archivo léame de forma predeterminada al crear un nuevo repositorio desde git hub, entonces, la rama maestra se crea automáticamente. Sin embargo, cuando intentas empujar eso no tiene ninguna rama. no puede presionar ... Por lo tanto, la mejor práctica es crear un repositorio sin la inicialización del archivo readme predeterminado.


En mi caso, tuve "mybranch" revisado, y había hecho git pull , así que no pude entender por qué el empuje no estaba funcionando. Finalmente, me di cuenta de que estaba empujando la rama equivocada. Estaba escribiendo git push origin master lugar de git push origin mybranch .

Así que si ya has hecho git pull y aún recibes este mensaje, asegúrate de que estás presionando la rama correcta.


Esto normalmente ocurre cuando git commit y tratas de git push cambios antes de git pulling en esa rama x donde alguien más ya ha hecho cambios.

El flujo normal sería el siguiente,

PASO 1 : git stash tus cambios locales no comprometidos en esa rama.

PASO 2 : git pull origin branch_name -v para pull and merge para realizar cambios localmente comprometidos en esa rama ( déle a esta combinación algún mensaje y corrija los conflictos, si los hay ) .

PASO 3 : git stash pop los cambios stash ed ( entonces puede hacer confirmaciones en archivos extraídos si lo desea o empujar cambios ya confirmados (STEP4) primero y hacer una nueva confirmación de archivos más adelante ) .

PASO 4 : git push origin branch_name -v los cambios combinados.

Reemplace branch_name con master (para la rama master ).


Experimenté el mismo problema y resultó que estaba en una sucursal diferente (local) de lo que pensaba Y la sucursal local correcta estaba atrasada en las confirmaciones desde el control remoto.

Mi solución: verifique la sucursal correcta, seleccione el compromiso de la otra sucursal local, git pull y git push


He resuelto este problema en mi repositorio GIT. No es necesario rebase o force commit en este caso. Utilice los siguientes pasos para resolver esto:

local_barnch> git branch --set-upstream to=origin/<local_branch_name> local_barnch>git pull origin <local_branch_name> local_barnch> git branch --set-upstream to=origin/master local_barnch>git push origin <local_branch_name>

Espero que ayude.


Mencioné esto en mi tutorial, Cómo usar GitHub: Un tutorial para principiantes .

Cuando crea un nuevo repositorio en GitHub, GitHub puede pedirle que cree un archivo readme. Si crea un archivo Léame directamente en GitHub, primero deberá realizar una solicitud de "extracción" antes de que la solicitud de "inserción" tenga éxito. Estos comandos ''extraerán'' el repositorio remoto, lo fusionarán con sus archivos actuales y luego ''enviarán'' todos los archivos a GitHub:

git pull https://github.com/thomas07vt/MyFirstRepo.git master git push https://github.com/thomas07vt/MyFirstRepo.git master


Otra causa de este problema (aparentemente no es tan común) ...

Mi servidor estaba atrasado ~ 12 horas cuando hice un empuje

Configuré NTP en el servidor SYNC mi reloj.

Ejecuté un nuevo git push que provocó el error discutido en esta publicación.


Otra solución es hacer avanzar el jefe del control remoto haciendo otra confirmación si puede. Después de colocar esta cabeza avanzada en el subárbol local, podrá empujar desde ella nuevamente.


Primera y sencilla solución.

  • Prueba este comando git push -f origin master .
  • Este comando hará a la fuerza todos los cambios necesarios en su repositorio.

Solución recomendada

  • Eliminar .git directorio .git de la carpeta.
  • Luego ejecuta estos comandos:

    git init git add . git commit -m "First Commit" git remote add origin [url] git push -u origin master

O

git push -f origin master

Solo use git push -f origin master si -u no funciona para usted.

Esto solucionará casi cualquier tipo de error que ocurra al empujar tus archivos.


Recibí el mensaje de error mencionado anteriormente cuando intenté empujar mi rama actual para foobar :

git checkout foobar git push origin foo

Resulta que tenía dos sucursales locales que seguían la misma sucursal remota:

foo -> origin/foo (some old branch) foobar -> origin/foo (my current working branch)

Me funcionó empujar mi rama actual usando:

git push origin foobar:foo

... y limpiar con git branch -d


Recibí un error similar al enviar los últimos cambios a un repositorio de Git que uso para gitweb . En mi caso, no hice ningún cambio en el repositorio simple, así que simplemente borré mi repositorio desnudo y cloné nuevamente:

git clone --bare <source repo path> <target bare repo path>


Si está seguro de que nadie ha realizado cambios en su repositorio de git y está trabajando en la última versión, git pull no tiene sentido como una solución en su corazón ...

Entonces esto es probablemente lo que sucedió, git commit --amend

Le permite combinar cambios preconfigurados con la confirmación previa en lugar de confirmarla como una instantánea completamente nueva. También se puede utilizar para editar simplemente el mensaje de confirmación anterior sin cambiar su instantánea.

Tutorial de ATLASSIAN: reescribiendo la historia

Sin embargo, no se recomienda realizar git commit --amend si ya ha git commit --amend el commit a GitHub , esto se debe a que "enmendar no solo altera el commit más reciente, lo reemplaza por completo. Para Git, se verá como un nuevo compromiso "que significa para otro desarrollador en tu GitHub, la historia parece A-> B-> C pero para ti se parece a A-> B-> D, si GitHub te permite push , todos los demás tendrán que hacerlo manualmente. arreglar su historia

Esta es la razón por la que recibe el mensaje de error ! [rejected] master -> master (non-fast-forward) ! [rejected] master -> master (non-fast-forward) , si sabe que nadie ha realizado su último cambio, puede hacer git push --force , esto alterará el historial de git en su repositorio público . De lo contrario ... puedes realizar git pull , pero creo que esto tendrá el mismo resultado que no git commit --amend por git commit --amend , creará un nuevo commit (es decir: historial de git después de git pull: A-> B-> C-> D)

Para más detalles: Cómo cambiar tu último compromiso.


Si no quiere entrar en su proyecto actual (y posiblemente enfrentar conflictos de fusión que no le interesa resolver) y no quiere crear otra rama (esto será tedioso para administrar otra rama), y no lo hace. No quiero hacer ningún comando de force Git arriesgado y permanente (que incluso después de leer lo que hacen a menudo me sorprende las implicaciones de hacerlo).

Solución : puede simplemente arrastrar los contenidos de su carpeta a otra carpeta, arrastrar el proyecto a su carpeta ahora vacía, arrastrar los contenidos extraídos a la papelera y luego arrastrar el proyecto correcto a la carpeta. Debes poder empujar adecuadamente y obtener los resultados deseados. Literalmente me toma menos de 10 segundos hacer esto.

Para las personas que me dirían que esto no es correcto sin citar ninguna consecuencia, o que me dicen que use un comando que me cause molestias en el futuro, les digo: "Este método literalmente me toma menos de 10 segundos". Si encuentro un comando git que toma menos de 10 segundos en implementarse y tiene el mismo efecto, lo adoptaré. Hasta entonces, estoy usando este método.

Una desventaja de este método es que su historial de confirmación aparecerá lineal cuando realmente se fusionó en una rama sin que la fusión esté documentada. Este podría no ser el mejor método cuando se trabaja con grupos. ¡Trabaja en las ramas en esos casos!


Si, por casualidad, git pull imprime Already up-to-date , es posible que desee verificar el push.default global de git push.default (In ~/.gitconfig ). Ajústelo a simple si estaba en la matching . La siguiente respuesta explica por qué:

Git - ¿Cuál es la diferencia entre push.default "emparejamiento" y "simple"

Además, vale la pena comprobar si su sucursal local está desactualizada con git remote show origin y realizar una extracción si es necesario.


Siempre que nadie más esté trabajando con una sucursal, supongo que hiciste lo siguiente:

1. $git commit #you committed your changes. 2. $git push origin <branch> #you pushed your commit to remote origin (yeah, success!) 3. $git commit --amend #you did some changes locally and committed with --amend 4. $git push origin <branch> #you pushed the "old", just amended commit to the remote origin and you thought "WTF?".

El paso 4. es la causa de tu problema, imho ...


Solo tuve el mismo problema, pero en mi caso había escrito la rama incorrecta en el control remoto. Entonces, parece que es otra fuente de este problema ... vuelva a verificar que está presionando a la rama correcta.


Tuve el mismo problema, lo que hice fue primero empujarlo por la fuerza usando este

git push --force

Hice esto después de comprometer los archivos y recibí un error, como lo hizo. Comprometió todos los archivos y los empujó. Luego, la próxima vez que empujé hacia el github. Hice lo que me pidió y estaba bien entonces. Espero que esto funcione para usted también :)


Tuve un problema similar y resultó que mi flujo de trabajo para mantener actualizada mi sucursal tenía la culpa. Estaba haciendo lo siguiente:

En mi ''maestro'' local

git fetch upstream git merge upstream/master --ff-only

luego de vuelta en mi sucursal local

git rebase master

Esto funcionó bien para un flujo de git anterior pero no con github. El cambio de git rebase fue el problema aquí que causó problemas con la sincronización (y debo admitir que es algo que he tenido que aceptar sin comprenderlo por completo) y, desafortunadamente, me puso en una posición en la que git push -f convirtió en la opción más fácil. No está bien.

Mi nuevo flujo es actualizar la rama directamente usando git merge siguiente manera:

En mi sucursal local

git fetch upstream git merge upstream/master

No avance rápido, ya que habré hecho cambios en la sucursal local.

Como probablemente pueda decir, no soy un experto en git, pero estoy informado de que este flujo de trabajo probablemente evitará los problemas específicos que tuve.


git push -f origen nombre de rama

Use el comando anterior solo si está seguro de que no necesita el código de sucursal remoto; de lo contrario, primero combine y luego presione el código


use git pull https://github.com/username/repository Es porque Github y los repositorios remotos no están sincronizados. Si pull del repositorio y luego pull todo estará sincronizado y el error desaparecerá.

`


git pull imprime ya up-to-date

solución:

es posible que se cree un repositorio / proyecto en remoto (servidor) y se agregue algún archivo allí. Luego, nuevamente se creó una Carpeta en su git git init local e inicializado. Este es el error , no debe crear git init en local, sino clonar el archivo. proyecto a su local utilizando git clone

luego tira


git pull origin branch_name --rebase

Esto funcionó para mí: el comando git pull origin branch_name --rebase cambios desde la sucursal remota al principio, y luego rebase la rama actual en la parte superior de la misma.