ramas fusionar crear conflictos git git-merge git-pull

git - fusionar - Resolver conflictos de combinación: forzar la sobrescritura de todos los archivos



git merge (2)

Estoy trabajando en un repositorio git solo (así que sí, sé las implicaciones y las advertencias de hacerlo) y de alguna manera uno de los árboles se comprometió después de ser empujado cuando no debería haberlo hecho.

Ahora estoy tratando de retroceder y se está quejando de cientos de conflictos de fusión.

¿Hay alguna manera de decirle a git que sobrescriba con fuerza todos y cada uno de los archivos localmente que provienen del servidor remoto? ¿Hay una manera más rápida que hacer el git reset --hard HEAD~1 y luego hacer el pull?

En esa misma nota, ¿hay alguna manera de hacer lo mismo con una simple fusión? Todo lo que he visto sugiere revisar todos y cada uno de los archivos durante la etapa de resolución de conflictos de combinación, pero con cientos de archivos no es posible hacerlo manualmente.


Hay tres soluciones simples para copiar la última versión que está en su repositorio remoto, descartando todos los cambios que haya realizado localmente:

  1. Descarta tu repositorio y vuelve a clonar. Esta es la solución más simple, pero si su repositorio es grande, puede llevar mucho tiempo y puede requerir un esfuerzo extra, como la configure , etc.

  2. Descarta los cambios locales con git reset --hard <hash> y luego haz un git pull . El problema es que primero debe encontrar una confirmación que preceda al historial de cambios que intenta evitar. Después de reiniciar a ese hash de confirmación, haz una git pull .

  3. Haga una git fetch para traer las actualizaciones a su referencia local de la rama remota (generalmente origen / maestro) y luego haga un git reset --hard pasando esta referencia, es decir, git reset --hard origin/master .


git reset --hard {remote_repository_name}/{branch_name}

Ejemplo:

git reset --hard upstream/branch1

Si está trabajando con una sucursal puede usar el código anterior. Pero antes de eso, debe establecer (ascendente u origen) en su repositorio local,

git remote add upstream https://github.com/lakini/example.git

aquí, https://github.com/lakini/example.git es el repositorio remoto aguas arriba.

Igual que esto, también podemos trabajar en el repositorio remoto (origen).

git reset --hard origin/branch1