2010-01-19 7 views
43

Actualmente estoy en la rama 'foo'. Acabo de ejecutar git merge master. El único problema es que había un cierto archivo en foo que quería conservar. ¿Hay alguna forma de recuperarlo pero mantener todos los otros cambios de merge master?git recuperar solo archivo que se eliminó durante una fusión

+0

'git merge' no bloqueará un archivo a menos que no se haya modificado en el árbol de trabajo y haya un cambio para traer desde la otra rama. Para mayor claridad, ¿la fusión se completó exitosamente y usted quiere la versión anterior de su sucursal, o la fusión generó conflictos y desea que la versión resuelta se parezca a la versión anterior de su sucursal? –

+0

Sí, la combinación fue exitosa. Yo quería la versión anterior del archivo. – tybro0103

Respuesta

46

intentar algo como esto:

git checkout HEAD -- filename 

Esto rodar su FileBack uno cometió. Si desea volver a una confirmación específica, puede usar un hash de confirmación o agregar^N al final de la palabra clave HEAD, p. HEAD^2.

+3

O si la fusión aún no está completa (debido a conflictos), simplemente git checkout filename. – paxos1977

+4

@ceretullis: si se debe a conflictos en el archivo en cuestión, necesitará 'git checkout --sombredearchivo'. –

+0

De hecho, terminé encontrando esto en otro lugar, pero usé un hash de confirmación en lugar de HEAD^1 ... ¡gracias! – tybro0103

0

No estoy seguro de cómo corregir el problema de la situación actual, pero es posible que desee consultar git merge -s ours. Los documentos son here.

Un flujo de trabajo sería

  1. Crear rama a de master
  2. hacer un cambio de costumbre en la rama a que usted no tendrá que fusionar de nuevo en master
  3. Salida master y git merge -s ours a
  4. Consulte a y continúe trabajando y comprometiéndose.

Ahora cuando se combina con el maestro, los cambios personalizados en el paso 2 serán ignorados.

+0

Los documentos ya no están aquí, tristemente. ;) – poige

Cuestiones relacionadas