2011-06-06 39 views
7

Ok, ciertamente ha habido publicaciones para esto, pero en realidad hice un commit porque pensé que era lo correcto.haga un git pull para sobrescribir cambios locales

Por lo tanto, tengo 2 repos, un desarrollo y una producción. Tuve que editar algo en la producción porque era una corrección de errores urgente, y ahora tengo 3 archivos que son más nuevos en la producción que en el desarrollo. Entonces, lo que hice fue comprometer la producción de los 3 archivos e intenté extraerlos, pero me dijeron que había errores de fusión. Intenté copiar y pegar los nuevos archivos en el servidor de desarrollo y volver a intentar todo y no funcionó. Ahora estoy seguro de que lo que necesito está en el desarrollo (ya que copié y pegué) y me comprometí, así que ¿cómo podría extraerlo? y sobrescribir los archivos en conflicto?

Gracias, Andre

---- Editar seguimiento a @Seths responder

Ok, supongo que necesito volver a redactar mi pregunta :) tengo 3 repos. Un desarrollador, uno en Github y una producción. Normalmente, para actualizar la producción solo hago un push desde dev a github, git pull master de origen (desde github a producción) y funciona. Desafortunadamente, cambié archivos en la producción sin almacenamiento. ¿Cómo fuerzo sobrescribir en lugar de fusionar cuando intento un tirón?

Respuesta

22

Si desea reemplazar por completo a su foo rama local con el contenido de la rama remota origen/foo

git fetch origin 
git checkout foo 
git reset --hard origin/foo 

Si desea hacer alguna otra cosa, por favor reformular su pregunta. Sin embargo, podría agregar el repositorio de producción git como control remoto y fusionar los cambios en vivo, en lugar de lo que haya intentado.

+0

Ok, supongo que necesito volver a redactar mi pregunta :) Tengo 3 repos. Un desarrollador, uno en github y una producción Normalmente, para actualizar la producción solo hago un empujón desde dev a github, git pull master de origen (desde github a producción) y funciona. Desafortunadamente, cambié archivos en la producción sin almacenamiento. ¿Cómo fuerzo sobrescribir en lugar de fusionar cuando intento un tirón? – Andre

+0

@ user786463: ¿Qué pasa exactamente con mi respuesta? Parece hacer exactamente lo que usted pidió (para valores de "foo" probablemente igual a "maestro"). Recuerde que debe aceptar la respuesta correcta cuando haya terminado. –

+0

¡Funcionó como un amuleto! Gracias. No sabía qué reemplazar con 'foo'. – Andre

1

Necesita empujar desde la producción primero a github.

git push origin yourbranch --force 

La fuerza se asegurará de que github tenga lo que tiene la producción.

Estas son las posibilidades de lo que podría hacer:

Tendrá a buscar en su desarrollo Repo los cambios en el repositorio de despliegue. En este punto, verá que el historial se está bifurcando (a través de git log --all --graph o gitk --all).

git fetch origin 

Ahora puede rebasar o combinar para obtener los últimos cambios que sean posteriores a las realizadas en el repositorio de producción. Esto le permitirá impulsar cambios en su repositorio de implementación en un momento posterior.

Los conflictos están ahí por una razón. Mírelos y resuélvalos, agregue y comprométase.

si desea que los conflictos se resuelvan mediante la adopción de lo que está en el lado de la producción se puede utilizar el "recursivo de ellos" estrategia:

git merge -s recursive -Xtheirs production/yourbranch 

Si usted quiere tomar ningún cambio desde su lado, se fusionan normalmente , pero cuando se detenga en los conflictos, obtenga el otro lado de la fusión, agregue y comprométalo.

git merge production/yourbranch 
git checkout production/yourbranch -- . 
git submodules update #this is optional and can be skipped if you don't have any submodules 
git add -A 
git commit 

Ahora los subsiguientes empujones a github del desarrollo y extracciones de github en producción funcionarán.

Puede restablecer la bifurcación, pero eso supone que no desea mantener los cambios que haya realizado en el repositorio de desarrollo.

git reset --hard production/yourbranch 

Espero que esto ayude.

Cuestiones relacionadas