Cómo descartar cualquier cambio realizado en un repositorio remoto GitHub y reemplazarlo por un repositorio local.
- Procedimiento para reemplazar repositorio remoto GitHub con repositorio local.
- Resumen del flujo completo.
- Situaciones alternativas.
⚠️ Advertencia
Este procedimiento eliminará permanentemente los cambios del repositorio remoto y lo reemplazará con la versión local. Usaremos este procedimiento solo cuando:
- Estemos seguros de que la versión local es la correcta.
- Queramos descartar TODOS los cambios remotos.
Procedimiento para reemplazar repositorio remoto GitHub con repositorio local
1º Comprobamos que tenemos conectado el repositorio local con el remoto
- Muestra los repositorios remotos vinculados al repositorio local (generalmente llamado origin).
- Debe mostrar URL de
fetchy push (ej: https://github.com/usuario/repo.git).
Desde la carpeta del proyecto, ejecutamos el comando:
git remote -v
En caso de no aparecer el origin, hay que vincular el repositorio local al remoto (hay que conocer la URL), con el comando:
git remote add origin https://github.com/proyectoajpdsoft/Primer_Componente_Angular
2º Asegurarnos de que estamos en la rama «main» (o la que estemos usando)
Nos aseguramos de que estamos en la rama main (o la rama que queramos sincronizar).
¿Cuándo usarlo?
- Si estábamos en otra rama y necesitamos volver a la rama main para actualizar local con remoto (o cualquier otra rama que deseemos).
git checkout main
Si estamos en la rama «main», nos devolverá un mensaje como este:
Already on ‘main’
Your branch is behind ‘origin/main’ by 3 commits, and can be fast-forwarded.
(use «git pull» to update your local branch)
3º Actualizar la referencia local del repositorio remoto
- Descarga los últimos cambios del remoto (sin fusionarlos).
¿Cuándo usarlo?
- Siempre antes de un git push para asegurarnos de tener la última versión.
git fetch origin main

4º Forzar que el repositorio remoto coincida con la versión local
- Actualiza el repositorio remoto y lo sincroniza con el local.
¿Cuándo usarlo?
- Cuando queremos sincronizar la rama remota con los últimos cambios del local.
git push --force-with-lease origin main
--force: sobrescribe el historial remoto con la rama local.--force-with-lease: solo fuerza el push si el remoto no ha cambiado desde tu último fetch (evita sobrescribir trabajo de otros).

Resumen del flujo completo
- Verificar conexión remota → git remote -v
- Cambiar a la rama objetivo → git checkout main
- Obtener referencia remota → git fetch origin main
- Sobrescribir remoto → git push –force-with-lease origin main
Situaciones alternativas
Si necesitamos sobrescribir una rama distinta a main
git push --force origin nombre-de-la-rama
Si queremos eliminar archivos remotos que solo existen en el remoto
git push --force --prune origin main
Si hay conflictos
Si preferimos mantener un historial limpio en lugar de forzar cambios, ejecutaremos, para fusionar cambios remotos:
git pull origin main
Y para enviar los cambios de local a remoto (sin forzar):
git push origin main