Cree un archivo y lo agregué al git local
echo "Archivo nuevo sin subir" > archivoNuevo git add archivoNuevoMe di cuenta que no tenía que subirlo aún, entonces trate de quitarlo de mi git local
git rm -f archivoNuevoY me di cuenta que borre el archivo físico, no era mi intención, solo quería eliminarlo del git local.
git fsck
Cuando se agrega un archivo a git, el genera un objeto dentro de su estructurals .git/objects/Para recuerar el archivo en este caso se puede utilizar git fsck Luego es navegar por los archivos o carpetas que están registradas en git a partir de los hash
Ejemplo practico
En este caso borre un Controller de Symfony2, y el procedimiento para recuperarlo fue el siguiente: Determinar un sistema de archivosubuntu@maquina:~/pathProyecto$ git fsck Checking object directories: 100% (256/256), done. Checking objects: 100% (1245/1245), done. dangling tree c971cfaceab2bc7dee1fe3efcedfffe716eb5f2c dangling tree ca214170eb5443c9b1b4630d036422eddb89d55bNavegar entre las carpetas del proyecto con git cat-file muestra el contenido de la carpeta o el contenido del archivo
ubuntu@maquina:~/pathProyecto$ git cat-file -p c971cfaceab2bc7dee1fe3efcedfffe716eb5f2c 100644 blob 90e794c25dcbf24e1c44aba5c0815ef377f0f46e .gitignore 100644 blob 88a57f8d8da49126c6f7d225d567ad216ace4d83 LICENSE 100644 blob 52c53293dc53ce6321fcd9f4f29779c55165f5ac Makefile 100644 blob 7e6f7a622ca9bedf5247e44d3ba166d5a7b65cdc README.md 100644 blob cad9eeb6320d7d3e3f83492531875c5862391fcd UPGRADE-2.2.md 100644 blob 504367f2346169e9b4108ac49880c8b009ff96e4 UPGRADE.md 040000 tree 7d121dafbe91256920c0dad3934b03bd77fa11d7 app 100644 blob 195b186617c9f85af388028a9345153cdce6e6e5 composer.json 100644 blob ae5d37d3e188354d7d4f2b2ff8abf90c8f744abf index.html 040000 tree d437a977cbaf21a38c2f7e7852bf9f2a1c72d18d src 040000 tree 533c5122c9dd123d49a685509bfa8953f227c13f web ubuntu@maquina:~/pathProyecto$ git cat-file -p d437a977cbaf21a38c2f7e7852bf9f2a1c72d18d 100644 blob 3418e55a68383c1cbc687c52a2994d1e8ed83800 .htaccess 040000 tree f9eec4300591f0193c08a80662b2d1ce907457d2 IDE 040000 tree 0e639844fbee1c0fbe51c1fc20ce1e60d3a7642f Empresa ubuntu@maquina:~/pathProyecto$ git cat-file -p 0e639844fbee1c0fbe51c1fc20ce1e60d3a7642f 040000 tree f4b8f9b61516241312f26ab72e92433405063394 ProyectoBundle ubuntu@maquina:~/pathProyecto$ git cat-file -p f4b8f9b61516241312f26ab72e92433405063394 040000 tree 7c5bb7ca3cd6db5806d3abf454990fd4fe238d37 Controller 040000 tree 5a215c7a5d3e98eaf635c3985c2bfa909e421987 DependencyInjection 040000 tree 13c50e99889ad2e98dfecb42473ee94bb5659a80 Entity 040000 tree cf8daca122047c54cc5da66b2e14d4f2af08472d Form 040000 tree e7424114972a6861d589b6b6a9b70684d7a89dbf Librerias 040000 tree 711abb90703eaef547cb0105d098fc34d4731fd7 Resources 040000 tree 080eb9df077fce893369b9a8845d194e12dd9728 Tests 100644 blob b4a35ce62448fa5d5ee1c50cca9e4ef9973e17a6 EmpresaProyectoBundle.php 040000 tree d3d6cd59cc5ece22f39109913de65e030d736043 Twig ubuntu@maquina:~/pathProyecto$ git cat-file -p 7c5bb7ca3cd6db5806d3abf454990fd4fe238d37 100644 blob 70260f4e9e5235d9a8f820519a078cf4f5656130 DefaultController.php 100644 blob 46b8e004efbff07e5b05be91672702395a37a967 PerdidoController.phpCuando por llegué a la carpeta donde debería estar hago de nuevo cat-file sobre el hash correspondiente:
ubuntu@maquina:~/pathProyecto$ git cat-file -p 46b8e004efbff07e5b05be91672702395a37a967 <?php namespace Empresa\ProyectoBundle\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; /** * Perdido Controller. * * @Route("/Perdido") */ class PerdidoController extends Controller ......y listo :D archivo recuperado
No hay comentarios:
Publicar un comentario