Errores de fusión de Git

Resuelto Sayanee asked hace 13 años • 8 respuestas

Tengo una rama de git llamada 9-sign-in-outcon un código que funciona perfectamente y quiero convertirla en maestra. Actualmente estoy en la rama maestra.

$ git branch
9-sign-in-out
* master

Estoy intentando cambiar de 9-sign-in-outrama, pero no me permite:

$ git checkout 9-sign-in-out
app/helpers/application_helper.rb: needs merge
config/routes.rb: needs merge
error: you need to resolve your current index first

¿Alguna idea de cómo puedo ignorar todos los errores de la rama maestra y convertir la 9-sign-in-outrama en maestra? ¿ Quizás git rebase ? Pero no quiero perder el código en 9-sign-in-outla sucursal.

Sayanee avatar May 15 '11 12:05 Sayanee
Aceptado

Vale la pena comprender qué significan esos mensajes de error needs mergee error: you need to resolve your current index firstindican que falló la fusión y que hay conflictos en esos archivos. Si ha decidido que, después de todo, cualquier fusión que intentaba hacer era una mala idea, puede volver a la normalidad con:

git reset --merge

Sin embargo, de lo contrario deberías resolver esos conflictos de fusión, como se describe en el manual de git .


Una vez que haya solucionado eso mediante cualquiera de las técnicas, debería poder pagar la 9-sign-in-outsucursal. El problema con simplemente cambiar el nombre 9-sign-in-outa master, como se sugiere en la respuesta de wRAR, es que si ha compartido su rama maestra anterior con alguien, esto le creará problemas, ya que si el historial de las dos ramas divergió, publicará reescrito. historia.

Básicamente, lo que desea hacer es fusionar la rama de su tema 9-sign-in-outpero mastermantener exactamente las versiones de los archivos en la rama de tema. Podrías hacer esto con los siguientes pasos:

# Switch to the topic branch:
git checkout 9-sign-in-out

# Create a merge commit, which looks as if it's merging in from master, but is
# actually discarding everything from the master branch and keeping everything
# from 9-sign-in-out:
git merge -s ours master

# Switch back to the master branch:
git checkout master

# Merge the topic branch into master - this should now be a fast-forward
# that leaves you with master exactly as 9-sign-in-out was:
git merge 9-sign-in-out
Mark Longair avatar May 15 '2011 07:05 Mark Longair

Cambiar rama, descartando todas las modificaciones locales

git checkout -f 9-sign-in-out 

Cambie el nombre de la rama actual a maestra, descartando la rama actual

git branch -M master 
wRAR avatar May 15 '2011 05:05 wRAR

como se sugiere en git status,

Unmerged paths:                                                                                                                                
(use "git add <file>..." to mark resolution)                                                                                                 

    both modified:   a.jl                                  
    both modified:   b.jl

Solía git add​​​​terminar la fusión y luego git checkoutfunciona bien.

Jingpeng Wu avatar Jan 31 '2018 01:01 Jingpeng Wu