¿Cómo puedo eliminar archivos en el repositorio remoto?

5 minutos de lectura

avatar de usuario de dvliman
dvliman

No estoy seguro de cuál es el término exacto para este problema. Básicamente, necesito eliminar algunos archivos y directorios en mi repositorio remoto

Tengo un repositorio Git local y un repositorio remoto en GitHub

  1. Yo mismo había estado trabajando.
  2. Un amigo hizo una solicitud de extracción.
  3. Fusioné su solicitud (a través de la interfaz de GitHub)
  4. Saqué los cambios.
  5. Probé el código y decidí no tomar sus cambios (no debería haberse fusionado en primer lugar)
  6. Volví a una confirmación anterior
  7. Hice algunos cambios
  8. Empuje al servidor.

Así es como se ve mi repositorio local en este momento:

*   7e143b1  (HEAD)
|\
| *   18cea0f  (origin/master, origin/HEAD, master)
| |\
| | * fc19ccf
* | | 6f3c58a
|/ /
* | 8d82486
"https://stackoverflow.com/" * d3ce65f  (pre-install-activeadmin)
|/
* 7d0566c
* d1c77ab
* 75ba704
* 30dc67c  (heroku/master)
* f89b1f6
* ea5e2db
* 08931d6
* 9773a6f
* b636aba
* cb6f8d4

Puedo cambiar mi repositorio local a 7d0566c. No estoy seguro de hacia dónde apunta el encabezado en mi repositorio remoto.

¿Cómo elimino los archivos que están en el repositorio remoto pero no están en mi repositorio local?

Obviamente, no veo ninguno de sus archivos en mi repositorio local porque reinicié mi CABEZA a una confirmación anterior. Sin embargo, el repositorio remoto todavía muestra sus archivos. Cuando me comprometo, se compromete muy bien.

¿Mi flujo de trabajo es incorrecto? Debería haber probado el parche en primer lugar.

  • No agrega/elimina archivos en un control remoto como github, ya que es un repositorio simple. Vea si las especificaciones de referencia para github y su repositorio local son las mismas ejecutando git rev-parse HEAD y git rev-parse origin/master (si su control remoto se llama origin).

    – fge

    16 de diciembre de 2011 a las 19:49

  • Creo que ayudará si muestra la salida de git log --pretty="format:%h %d" --graph --all y explicar a partir de ahí.

    – htanata

    16 de diciembre de 2011 a las 19:56

  • Derecha. no agrega/elimina archivos. Ejem. Ellos son diferentes. ¿Cómo debo solucionar este problema? Gracias

    – dvliman

    16 de diciembre de 2011 a las 19:58

  • * 7e143b1 (CABEZA) |\ | * 18cea0f (origen/maestro, origen/CABEZA, maestro) | |\ | | * fc19ccf * | | 6f3c58a |/ / * | 8d82486 “https://stackoverflow.com/” * d3ce65f (preinstalación-activeadmin) |/ * 7d0566c * d1c77ab * 75ba704 * 30dc67c (heroku/master) * f89b1f6 * ea5e2db * 08931d6 * 9773a6f * b636aba * cb6f8d4 No estoy seguro de cómo esto ayudaría Puedo cambiar mi repositorio local a 7d0566c. No estoy seguro de adónde apunta la cabeza en mi repositorio remoto

    – dvliman

    16 de diciembre de 2011 a las 20:02

  • tengo curiosidad por 7e143b1. ¿Es aquí donde hiciste tu reversión? Si es así, ¿cómo hiciste eso?

    – htanata

    16 de diciembre de 2011 a las 20:33

Extraiga los cambios del servidorluego haz un git rm en su repositorio local, confirme los cambios y envíelos al servidor. Los archivos serán eliminados.

  • ¿Hay alguna manera fácil de eliminar estos archivos de mi repositorio local? decir que hay cientos de archivos? Gracias

    – dvliman

    16 de diciembre de 2011 a las 19:57

  • @limaoit: no soy un experto en Git, por lo que probablemente haya una mejor manera, pero una simple sería copiar el directorio en otro lugar, extraerlo del servidor para que esté actualizado, luego eliminar todo en el repositorio excepto .gitmueve todo (excepto .git) desde su copia de seguridad a su repositorio, confirmar y enviar.

    – Ry-

    16 dic 2011 a las 20:00

  • Puede usar el shell para eliminar los archivos. Eso significa que puede usar un script de shell, buscar, agregar archivos o cualquier técnica de eliminación masiva que desee. Cuando termines, ejecuta “git add -A”. del directorio de nivel superior. El indicador -A le indicará a git que observe los archivos que ha eliminado.

    – wadesworld

    16 de diciembre de 2011 a las 22:30


  • Pensé que en realidad necesita usar ‘git rm’ para eliminar archivos del árbol y del sistema de archivos. ‘rm’ solo no es suficiente.

    – dvliman

    22 de diciembre de 2011 a las 10:00

  • @dvliman sí, necesitaría hacer ‘git rm’, pero el punto de @wadesworld es que aún puede usar la línea de comando para eso. por ejemplo: git rm junk/*.java haría git rm todos los archivos java en el directorio basura.

    –Mike Williamson

    22 de noviembre de 2013 a las 22:02

Estoy asumiendo 18cea0f es donde ocurrió la fusión de su solicitud de extracción. Para revertir esa fusión, puede hacer:

git revert -m 1 18cea0f

Puede leer más aquí: http://progit.org/2010/03/02/undoing-merges.html

  • Ya lo he hecho. Mi repositorio local se revirtió con éxito. No hay problema allí. El repositorio remoto es el que causa el problema. Contiene archivos de fc19ccf .etc…

    – dvliman

    16 de diciembre de 2011 a las 20:33

  • @limanoit Solo necesita enviar sus cambios al repositorio remoto: git push origin master.

    – htanata

    16 de diciembre de 2011 a las 21:19


  • @htnata Sí, lo hice. Por eso hice esta pregunta. Mi repositorio local no contiene, por ejemplo, el archivo A, B, C. Pero mi repositorio remoto contiene el archivo A, B, C, que es el efecto de la fusión anterior. De hecho, solucioné este problema al volver a clonar el repositorio. Eliminar manualmente el archivo. y presione el compromiso. Esto es bastante raro. Me pregunto si hay una mejor solución a este problema.

    – dvliman

    17 de diciembre de 2011 a las 1:03


  • @limanoit Si haces un clon fresco y haces el git revert ... como en mi respuesta, y luego presiona, deberías obtener el mismo resultado que obtuviste. Creo que esto es lo que pasó. Usaste git reset --hard y luego realizó algunos cambios además de eso (paso 7). Intentaste empujar, pero no pudiste empujar. entonces lo hiciste git pull, que fusionó la solicitud de extracción desde el control remoto con su maestro. Eso explica por qué todavía tienes la solicitud de extracción.

    – htanata

    17 de diciembre de 2011 a las 3:55


¿Ha sido útil esta solución?