remotas - qué tipos de etiquetas existen en git
¿Cómo devuelvo la rama eliminada en git? (1)
Para evitar el problema en primer lugar, Jefromi aconseja en los comentarios:
Otro consejo: solo use
git branch -d
, notgit branch -D
.
Se le advertirá si va a eliminar algo que podría hacerle perder trabajo, entonces puede tomar un segundo para pensar antes de usar-D
.
(O bien, puede ir a eliminar degitk
para que realmente vea lo que está eliminando).
-d
Eliminar una rama
La rama debe fusionarse por completo en su rama ascendente, o enHEAD
si no se estableció en sentido ascendente con--track
o--set-upstream
.
Pero si "perdiste" tu trabajo, mira uno de los muchos blogs sobre reflog (como sugiere James Kyburz en los comentarios):
volver al listado Git reflog al rescate 09 de septiembre de 2010 - escrito por Chris Sloan | 0 comentarios "
El otro día, estaba trabajando en una función para Real Travel utilizando nuestra estrategia de bifurcación actual, ya que cada versión que hacemos es una rama separada.
No estoy seguro de si fue una causa de falta de sueño por las horas atrasadas, pero accidentalmente borré mi copia local y remota de la rama antes de fusionarla de nuevo en la rama principal para su lanzamiento .
Después de un rápido estado de shock y pensamientos en mi cabeza de perder horas de trabajo, me calmé y confié en mi conocimiento de Git.
Lectura de tu historial de confirmaciones completo:Hay dos formas de leer el historial de commit en git. La primera forma muestra una lista de detalles confirma, mientras que la otra muestra el registro en referencia a la
HEAD
actual.
// log of detailed commits by users
$> git log
// reference log compared to the current HEAD
$> git reflog
Utilizando el comando
reflog
, pude averiguar exactamente dónde estaba la última referencia a mi sucursal eliminada.
Un resultado de ejemplo delreflog
podría verse así:
c7f3d98 HEAD@{0}: commit: Merged in some code
f5716c8 HEAD@{1}: pull : Fast-forward
d93c27b HEAD@{2}: commit: Added some items to project
...
Ahora, el reflog no mostrará exactamente dónde se eliminó la rama, pero si recuerda su último compromiso con esa rama y tiene un mensaje suficientemente detallado, debería ser fácil de encontrar y restaurar.
Restaurar su sucursal es sencillo al consultar la HEAD que desea en una nueva sucursal.
$> git checkout -b my_new_branch HEAD@{5}
También puede usar el hash para pagar la nueva sucursal.
$> git checkout -b my_new_branch d93c27b
Lo suficientemente simple y ahora puedo continuar fusionando la rama antes de eliminarla.
Estoy tratando de usar git para nuestro desarrollo de software. Descubrí que si eliminé una rama en git, podría perder mi código para siempre. Eso me sorprendió Pensé que como sistema de control de versiones, debería poder dejarme hacer cualquier cosa (incluso estúpida) sin preocuparme por dañar mi trabajo.
Los pasos a continuación son lo que hice:
- Inicializa un repositorio de git.
- confirmar varios cambios en el repositorio.
- cambiar / verificar el directorio de trabajo actual al primer commit.
- eliminar la rama maestra
- luego perdí todas mis obras y no puedo creer lo que vi. ¿Es real? Si estoy borracho mientras estoy codificando Podría perder el código en git.
La pregunta es ¿cómo puedo revertir la acción de eliminar una rama? O bien, ¿cómo puedo obtener toda la historia en git, incluso algo que ha desaparecido en el registro?