tutorial tienes posible porque hacer fusionar example consola conflictos archivos git rebase

tienes - resolver conflictos en github



Git rebase: continúa con las quejas incluso cuando se hayan resuelto todos los conflictos de combinación (6)

Acabo de tener este problema, y ​​aunque creo que podría haber algunas causas, aquí está el mío ...

Tuve un gancho de precompilación de git que rechazó confirmaciones bajo ciertas condiciones. Esto está bien cuando se realiza manualmente, ya que mostrará la salida del gancho, y puedo corregirlo o elegir ignorarlo usando commit --no-verify.

El problema parece ser que cuando se rebase, rebase --continue también llamará al enganche (para comprometer la última serie de cambios). Pero rebase no mostrará la salida de enlace, solo verá que falló, y luego escupirá un error menos específico que dice ''Debes editar todos los conflictos de fusión y luego marcarlos como resueltos usando git add''

Para solucionarlo, realice una etapa de todos sus cambios, y en lugar de hacer ''git rebase --continuar'', pruebe con ''git commit''. Si sufre el mismo problema con el anzuelo, debería ver las razones por las que está fallando.

Curiosamente, aunque git rebase no muestra la salida de git hook, sí acepta un --no-verify para eludir los ganchos.

Estoy enfrentando un problema que no estoy seguro de cómo resolverlo.

Hice una rebase contra el maestro de mi sucursal:

git rebase master

y obtuve el siguiente error

First, rewinding head to replay your work on top of it... Applying: checkstyled. Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... Auto-merging AssetsLoader.java CONFLICT (content): Merge conflict in AssetsLoader.java Failed to merge in the changes. Patch failed at 0001 checkstyled.

Así que fui a mi editor favorito, solucioné el conflicto de 1 línea, guardé el archivo e hice un estado de git y obtuve el siguiente resultado:

# Not currently on any branch. # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: PassengerContactHandler.java # # Unmerged paths: # (use "git reset HEAD <file>..." to unstage) # (use "git add/rm <file>..." as appropriate to mark resolution) # # both modified: AssetsLoader.java #

Hice un git agregar AssetsLoader.java y un estado de git y obtuve lo siguiente:

# Not currently on any branch. # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: AssetsLoader.java # modified: PassengerContactHandler.java #

y cuando lo hice git rebase --continúe me sale:

git rebase --continue You must edit all merge conflicts and then mark them as resolved using git add

Sé que puedo omitir el parche y continuar la rebase, pero no estoy seguro de si los cambios en PassengerContactHandler.java se volverán a establecer en mi rama o no.

entonces no estoy seguro, ¿cómo debo proceder?

Editar: ¿Podría ser que el archivo con el conflicto resuelto sea exactamente igual a la versión original?

Muchas gracias, Lucas

Editar, me volvió a pasar:

Me acaba de pasar otra vez,

(307ac0d...)|REBASE)$ git status # Not currently on any branch. # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: assets/world/level1/Level-1.xml # modified: George.java # modified: DefaultPassenger.java # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # mb-art/originalAssets/27dec/

((307ac0d ...) | REBASE) $ git rebase --continue

You must edit all merge conflicts and then mark them as resolved using git add

git --version

git version 1.7.1


Después de solucionar el conflicto, asegúrese de que los archivos modificados se agreguen a sus archivos por etapas. Esto resolvió mi problema.


Esto sucede porque, al solucionar un conflicto, eliminaste todo el código del parche aplicado a la rama en la que estás redistribuyendo. Use git rebase --skip para continuar.

Un poco más detalles:

Normalmente, al arreglar un conflicto durante la rebase, editarás el archivo en conflicto, manteniendo parte o todo el código en el parche que se aplica actualmente a la rama en la que repostaste. Después de arreglar el parche y hacer

git add your/conflicted/file git status

obtendrá una línea (generalmente verde) que muestra el archivo modificado

modified: su / conflicted / archivo

git rebase --continuará funcionará bien en esta situación.

A veces, sin embargo, al resolver el conflicto, eliminas todo en tu nuevo parche, manteniendo solo el código de la rama en la que reinicieste tu trabajo. Ahora cuando agregue el archivo, será exactamente igual al que intentó volver a establecer. El estado de git no mostrará una línea verde que muestre los archivos modificados. Ahora, si lo haces

git rebase --continue

git se quejará con

Sin cambios: ¿se olvidó de usar ''git add''?

Lo que Git realmente quiere que hagas en esta situación es usar

git rebase --skip

saltear el parche Anteriormente nunca hice esto, ya que siempre estaba seguro de lo que en realidad se saltaría si lo hiciera, no era obvio para mí lo que realmente significaba "omitir este parche". Pero si no obtienes una línea verde con

modified: su / conflicted / archivo

después de editar el archivo en conflicto, agregarlo y hacer el estado de git, entonces puede estar bastante seguro de haber eliminado todo el parche, y en su lugar puede usar

git rebase --skip

continuar.

La publicación original dice que esto a veces funciona:

git add -A git rebase --continue # works magically?

... pero no confíe en esto (y asegúrese de no agregar archivos sobrantes en sus carpetas de repositorio)


Intenta ejecutar esto en tu línea de comando:

$ git mergetool

Debe mostrar un editor interactivo que le permita resolver los conflictos. Es más fácil que tratar de hacerlo manualmente, y también reconocerá cuando hagas la fusión. También evitará situaciones en las que no se fusiona completamente por accidente que puede suceder cuando intenta hacerlo manualmente.


Te perdiste un conflicto de fusión en AssetsLoader.java. Ábrelo y busca marcadores de conflicto (">>>>", "====", "<<<<<") y luego vuelve a agregar git. Haga un ''git diff -staged'' si tiene dificultades para encontrarlo.