misteriosas ramas que desaparecen en git

3 minutos de lectura

Aquí hay algunas acciones de git que realicé. Como puede ver, hice una nueva rama, modifiqué mis archivos y luego confirmé los cambios. Después de volver a cambiar a otra rama, con la esperanza de fusionarme, la rama en la que estaba trabajando desapareció.

¿Alguien sabe cómo puedo recuperar los archivos de fixed_merge_branch? ¡Estoy enloqueciendo!

[email protected]$ git branch fixed_merge_conflict
[email protected]$ git checkout fixed_merge_conflict
M   ArtworkViewController.h
M   ArtworkViewController.m
M   ArtworkViewController.xib
M   Classes/DFRAppDelegate.h
M   Classes/DFRAppDelegate.m
M   Classes/WorkGalleryViewController.m
M   Classes/WorkGalleryViewController.xib
M   DFR.xcodeproj/project.pbxproj
M   DFRViewController.xib
M   Data.h
M   Data.m
M   MainWindow.xib
M   cn.lproj/Localizable.strings
M   en.lproj/Localizable.strings
A   fr.lproj/Localizable.strings
Switched to branch 'fixed_merge_conflict'
[email protected]$ git add .
[email protected]$ cd Classes/
[email protected]$ git add .
[email protected]$ cd ..
[email protected]$ git add -u
[email protected]$ git status
# Not currently on any branch.
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   ArtworkViewController.h
#   modified:   ArtworkViewController.m
#   modified:   ArtworkViewController.xib
#   modified:   Classes/DFRAppDelegate.h
#   modified:   Classes/DFRAppDelegate.m
#   modified:   Classes/WorkGalleryViewController.m
#   modified:   DFR.xcodeproj/project.pbxproj
#   modified:   Data.h
#   modified:   Data.m
#   modified:   MainWindow.xib
#   modified:   cn.lproj/Localizable.strings
#   modified:   en.lproj/Localizable.strings
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   fr.lproj/
[email protected]$ git commit -m "re-did changes lost by merge screw up"
[detached HEAD 858491f] re-did changes lost by merge screw up
 12 files changed, 110 insertions(+), 50 deletions(-)
[email protected]$ git checkout develop
Previous HEAD position was 858491f... re-did changes lost by merge screw up
Switched to branch 'develop'
[email protected]$ git branch
  artwork_model
  artwork_model_localisation
  artwork_screen
* develop
  logger
  master
  start_artwork_model
[email protected]$ git merge fixed_merge_conflict
fatal: 'fixed_merge_conflict' does not point to a commit
[email protected]$ git checkout fixed_merge_conflict
error: pathspec 'fixed_merge_conflict' did not match any file(s) known to git.
[email protected]$ git checkout fixed_merge_conflict
error: pathspec 'fixed_merge_conflict' did not match any file(s) known to git.
[email protected]$ git branch
  artwork_model
  artwork_model_localisation
  artwork_screen
* develop
  logger
  master
  start_artwork_model
[email protected]$ git checkout
[email protected]$ git branch
  artwork_model
  artwork_model_localisation
  artwork_screen
* develop
  logger
  master
  start_artwork_model
[email protected]$ pwd
/Users/tristan/Documents/DFR
[email protected]$ 

¡Gracias un montón!

Bueno, no veo exactamente por qué la rama ‘desapareció’ pero no te preocupes, tus archivos no lo hicieron.

Puedes encontrarlos por muchos medios:

  • Puede utilizar el mensaje impreso por el git checkout cuando dejó su sucursal anónima: “La posición anterior de HEAD era 858491f”.
  • Puedes usar git reflog y encuentre la confirmación de sus archivos.

Luego puede ejecutar esto para recrear la rama:

git checkout 858491f -b fixed_merge_conflict

y luego puedes hacer tu fusión:

git checkout develop
git merge fixed_merge_conflict

O puede hacer la fusión en un solo paso si no le importa la rama:

git merge 858491f

  • Eres un salvavidas

    – demberto

    11 oct.

misteriosas ramas que desaparecen en git
hellatan

por alguna razón, estás recibiendo un detach head situación. No estoy del todo seguro de cómo se produce eso en un repositorio de git regular, pero lo he encontrado usando git svn (y se me ocurrió mi propia solución aquí). Puede ser que no lo sean --tracking el repositorio ascendente cuando crea una nueva rama. Por lo general, cuando recibe un detached head, cuando haces un git branch, ya verás (asterisk) (no branch) (no sé cómo hacer un asterisco literal con descuento)

  • los enlaces estan podridos

    – innisfree

    11 abr.

.

¿Ha sido útil esta solución?