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
- Yo mismo había estado trabajando.
- Un amigo hizo una solicitud de extracción.
- Fusioné su solicitud (a través de la interfaz de GitHub)
- Saqué los cambios.
- Probé el código y decidí no tomar sus cambios (no debería haberse fusionado en primer lugar)
- Volví a una confirmación anterior
- Hice algunos cambios
- 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.
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
.git
mueve 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íagit 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ó. Usastegit reset --hard
y luego realizó algunos cambios además de eso (paso 7). Intentaste empujar, pero no pudiste empujar. entonces lo hicistegit 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
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
ygit rev-parse origin/master
(si su control remoto se llamaorigin
).– 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