web-dev-qa-db-fra.com

Résolvez les conflits en utilisant des modifications distantes lors de l'extraction depuis Git remote

J'essaie d'extraire le code de mon dépôt GitHub sur mon serveur, mais l'extraction continue d'échouer en raison de conflits de fusion. Je ne souhaite conserver aucune des modifications survenues sur mon serveur local depuis la dernière extraction.

Alors, y a-t-il un moyen de forcer Git à écraser toute version de GitHub, plutôt que de me déranger à propos de conflits?

260
David Tuite

Si vous voulez vraiment supprimer les commits que vous avez créés localement, c'est-à-dire ne plus les avoir dans l'historique, vous ne demandez pas comment tirer - tirer signifie fusionner, et vous n'avez pas besoin de le faire. fusionner. Tout ce que vous avez besoin de faire est ceci:

# fetch from the default remote, Origin
git fetch
# reset your current branch (master) to Origin's master
git reset --hard Origin/master

Personnellement, je vous recommande de créer d’abord une branche de sauvegarde à votre HEAD actuelle, afin que, si vous réalisez que cette idée soit mauvaise, vous ne l’aviez pas perdue de vue.

Si, en revanche, vous souhaitez conserver ces validations et donner l'impression que vous avez fusionné avec Origin, et que la fusion conserve uniquement les versions d'origine, vous pouvez utiliser la stratégie de fusion ours:

# fetch from the default remote, Origin
git fetch
# create a branch at your current master
git branch old-master
# reset to Origin's master
git reset --hard Origin/master
# merge your old master, keeping "our" (Origin/master's) content
git merge -s ours old-master
438
Cascabel

Vous pouvez soit utiliser la réponse du lien dupliqué désigné par nvm.

Ou vous pouvez résoudre les conflits en utilisant leurs modifications (mais certaines de vos modifications peuvent être conservées si elles ne sont pas en conflit avec la version distante):

git pull -s recursive -X theirs
119
Antoine Pelisse