Git undo local branch delete
Acabo de eliminar la rama equivocada con algunos cambios experimentales que necesito con git branch -D branchName
.
¿Cómo puedo recuperar la rama?
6 answers
Puedes usar git reflog para encontrar el SHA1 de la última confirmación de la rama. Desde ese punto, puede recrear una rama usando
git branch branchName <sha1>
Edit: Como dice @seagullJS, el comando branch -D
le dice el sha1, por lo que si aún no ha cerrado la terminal, se vuelve realmente fácil. Por ejemplo, esto elimina e inmediatamente restaura una rama llamada master2
:
user@MY-PC /C/MyRepo (master)
$ git branch -D master2
Deleted branch master2 (was 130d7ba). <-- This is the SHA1 we need to restore it!
user@MY-PC /C/MyRepo (master)
$ git branch master2 130d7ba
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-13 08:40:35
Si conoces el último SHA1 de la rama, puedes probar
git branch branchName <SHA1>
Puede encontrar el SHA1 usando git reflog
, descrito en la solución aquí.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-26 17:13:17
Si aún no ha presionado la eliminación, simplemente puede hacer:
$ git checkout deletedBranchName
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-14 16:07:04
Si acaba de eliminar la rama, verá algo como esto en su terminal:
Deleted branch branch_name(was e562d13)
- donde e562d13 es un ID único (también conocido como el "SHA" o "hash"), con esto puede restaurar la rama eliminada.
Para restaurar la rama, use:
git checkout -b <branch_name> <sha>
Por ejemplo:
git checkout -b branch_name e562d13
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-15 05:32:27
Primero: haga una copia de seguridad de todo su directorio, incluido el .directorio git.
Segundo: Puedes usar git fsck --lost-found
para obtener el ID de las confirmaciones perdidas.
Tercero: rebase o combine en el commit perdido.
Cuarto: Siempre piénsalo dos veces antes de usar -D o force force con git:)
También podría leer esta buena discusión de cómo recuperarse de este tipo de error.
EDITAR: Por cierto, no ejecutar git gc
(o permitir que se ejecute por sí mismo-es decir, no ejecutar git fetch
o cualquier cosa similar) o puedes perder tus commits para siempre.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-26 16:57:44
Gracias, esto funcionó.
Git branch new_branch_name
sha1
Git checkout new_branch_name
/ / puede ver mis antiguos archivos registrados en mi antigua rama
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-07 16:00:17