tutorial sesion new iniciar downloader git github

git - sesion - ¿Cómo eliminar "fatal: objeto suelto"?



github/new (5)

Uno de mis repositorios clonados está obteniendo esto de un git fsck

fatal: objeto suelto 40bda4e3b79c3d7bf598df31d9e68470f97a3f79 (almacenado en .git / objects / 40 / bda4e3b79c3d7bf598df31d9e68470f97a3f79) está dañado

Tengo otra copia de eso que fsck está limpiamente.

He intentado oprimir el directorio / subdirectorios que contienen el fatal, y volver a iniciarlo. El problema continúa.

Realmente no me importa ningún archivo en particular, solo quiero que el repositorio compruebe de forma limpia. ¿Qué debo hacer?

Nota: el repositorio remoto está alojado en github.


Haga git checkout a la otra rama, obtendrá una lista de los archivos modificados, simplemente los confirma y empuja en la rama. Si haces esto, el problema se resolverá, la próxima vez que hagas algunos cambios, el git status debería funcionar.


La idea es:

  1. primero elimine sus registros de git actuales que residen en su .git bajo su proyecto actual (denotémoslo por "proyecto A").
  2. Haga una copia de su proyecto actual, denotamos el duplicado como "proyecto B".
  3. Ahora cd en el proyecto A y git clone y reinicie a la última confirmación.
  4. Copie todos los archivos del proyecto B y reemplácelos en el proyecto A.
  5. Ahora cd en el proyecto A y use el git status para ver el estado del proyecto A. Debe ser como si no hubiera habido corrupción alguna vez.

En resumen, haga una copia para reservar su área de trabajo actual, y combínela con un clon nuevo reemplazando los archivos y luego haga frente a sus cambios como siempre.

Aquí está en acción:

  1. Primero veo que tengo una corrupción (lo cual se debe a que forzé mi máquina virtual a apagarse de forma inadecuada ayer: P):

    ✘ domicor @ ubuntu  ~ / dotfiles   maestro ●  git status de error: objeto de archivo .git / objetos / cd / 593f6db1d5050406e15b9c80d215fd48db39f4 está vacía error: objeto de archivo .git / objetos / cd / 593f6db1d5050406e15b9c80d215fd48db39f4 está vacía fatal: suelta cd593f6db1d5050406e15b9c80d215fd48db39f4 objeto (almacenada en .git / objects / cd / 593f6db1d5050406e15b9c80d215fd48db39f4) está dañado

  2. Haga una copia de mi carpeta de dotfiles de dotfiles y ahora elimine la carpeta .git .

    $ cd ~ / dotfiles $ rm -rf .git

  3. A continuación, vuelva a crear un repositorio git.

    $ git init

  4. Añadir un mando a distancia.

    $ git remoto agregar origen [email protected]: domicor / dotfiles.git

  5. Fetch desde el control remoto.

    $ git fetch

    Aquí hay una captura de pantalla de los comandos anteriores:

  6. Ahora reinicia la CABEZA.

    $ git reset - hard origin / master

    Esta es la foto:

    Observe que justo después de que obtuve el control remoto git status un comando git status para verificar el estado de mi repositorio. Puedes ver que todos los archivos están sin seguimiento. Y la primera parte del indicador de la línea de comandos es naranja desde mi comando git init hasta el comando git reset que indica que cuando inicialicé mi repositorio, git detectó los archivos y después del restablecimiento, todos los archivos se restaurarán al estado de HEAD, por lo tanto el indicador verde .

  7. Establecer la rama aguas arriba:

    $ git branch --set-upstream-to = origin / master master

  8. Ahora copie sus archivos desde la carpeta de copia de seguridad (para mí son dotfiles (copy) de dotfiles (copy) ) manualmente o a través de la línea de comandos para reemplazar los archivos en la carpeta de archivos de dotfiles . Compruebe el estado y debería haber cambios al igual que mi captura de pantalla:

  9. Ahora puede obtener git diff your-filename para ver si sus cambios se aplican correctamente y puede agregar archivos y confirmar a partir de ahora. / o /

Para entenderlo mejor, el git VCS simplemente registra sus cambios. Cuando el VCS está dañado, sus archivos aún están seguros. Todavía están allí cuando los dejaste. Entonces, haga una copia de seguridad de sus archivos y restaure los registros de git de otros lugares y git puede comparar la copia de restauración con el estado actual de su archivo y tener ideas sobre lo que ha cambiado, tal como lo hizo antes de la corrupción. Y vítores



Primero, puedes revisar el sistema de archivos para ver si hay errores: fsck -y

A continuación, compruebe el repositorio git fsck : git fsck


Respuesta fácil: aleja el viejo repo y reclona. Si tiene cosas en el antiguo repositorio que desea conservar, hay formas de obtenerlas, pero primero obtenga un buen repo.