ver tipos tag modificados log etiquetas crear archivos git git-tower

tipos - git ver archivos modificados



En Git, ¿cómo puedo recuperar un archivo en etapas revertido antes de la confirmación? (2)

Estaba intentando hacer un cambio en mi repositorio usando Git Tower. Cuando lo hice, hubo un conflicto y, por error, toqué todo el escenario (como quería comprometerme después de resolver el conflicto). Cuando lo hice, el conflicto se marcó como resuelto.

Quería resolver manualmente el cambio, así que presioné "Abortar Merge"; sin embargo, cuando lo hice, ¡revertí todos mis cambios! ¿Hay alguna forma de recuperarlos?


Para ampliar la respuesta de Alexander con una alternativa más simple: sí, si ha organizado sus cambios, entonces probablemente pueda recuperar sus archivos. Cuando ejecuta git add , los archivos se agregan realmente a la base de datos de objetos de Git. En el momento en que lo haga, git colocará el archivo en el índice:

% git add bar.txt % git ls-files --stage 100644 ce013625030ba8dba906f756967f9e9ca394464a 0 bar.txt 100644 6af0abcdfc7822d5f87315af1bb3367484ee3c0c 0 foo.txt

Tenga en cuenta que la entrada para bar.txt contiene el ID del objeto del archivo. Git realmente ha agregado el archivo a su base de datos de objetos. En este caso, Git lo ha agregado al repositorio como un objeto suelto:

% ls -Flas .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a 4 -r--r--r-- 1 ethomson staff 21 14 Jun 23:58 .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a

Estos archivos eventualmente serán recolectados como basura (así que, de hecho, no ejecute explícitamente git gc ). Afortunadamente, de manera predeterminada, esto sucederá en cuestión de meses , no días. Hasta que estos archivos no sean recolectados, puedes recuperarlos.

La forma más sencilla de hacerlo es descargar e instalar el programa git-recover en modo interactivo:

% git recover -i Recoverable orphaned git blobs: 61c2562a7b851b69596f0bcad1d8f54c400be977 (Thu 15 Jun 2017 12:20:22 CEST) > Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod > tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim > veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea > commodo consequat. Duis aute irure dolor in reprehenderit in voluptate Recover this file? [y,n,v,f,q,?]:

git-recover busca archivos en la base de datos de objetos que no están comprometidos (o en el índice). Puede encontrar más información sobre git-recover en la publicación de blog que lo anuncia .


Si tienes algo organizado para hacer, probablemente deberías poder recuperarlo. (Si acaba de cambiar la copia de trabajo, no podrá restaurarla).

Primero que nada: no ejecute git gc . Haga una copia de seguridad de su repositorio y copia de trabajo antes de continuar. (Asegúrese de hacer una copia de seguridad del directorio .git ). También evite cerrar el terminal donde sucedió esto, y / o reiniciar; si todo falla, tiene la posibilidad de encontrar cosas en el historial / memoria.

De todos modos, lo primero que debes intentar es:

git fsck --lost-found

Se imprimirá algo así como

Checking object directories: 100% (256/256), done. Checking objects: 100% (30165/30165), done. dangling blob 8f72c7d79f964b8279da93ca8c05bd685e892756 dangling commit 4993502a6394491190d3f4d6fb3d1e14019c2e9b

Como perdiste archivos en etapas y no hiciste una confirmación, te interesan las entradas de dangling blob .

Ejecute git show <sha> para cada uno, algunos de ellos deberían ser sus archivos.