web-dev-qa-db-fra.com

Git résoudre les conflits en utilisant --ours/- leurs pour tous les fichiers

Existe-t-il un moyen de résoudre les conflits pour tous les fichiers en utilisant checkout --ours et --theirs? Je sais que vous pouvez le faire pour des fichiers individuels mais je ne pouvais pas trouver un moyen de le faire pour tous.

85
exe163

Vous pouvez aussi -Xours ou -Xtheirs avec git merge. Alors:

  1. abandonner la fusion en cours (par exemple avec git reset --hard HEAD)
  2. fusionner en utilisant la stratégie que vous préférez (git merge -Xours ou git merge -Xtheirs)

AVERTISSEMENT: bien sûr, vous ne pouvez choisir qu'une seule option, soit -Xours ou -Xtheirs, utilisez une stratégie différente, vous devriez bien sûr aller fichier par fichier.

Je ne sais pas s'il existe un moyen de checkout, mais je ne pense pas honnêtement que ce soit terriblement utile: il est utile de sélectionner la stratégie à l'aide de la commande Checkout si vous souhaitez différentes solutions pour différents fichiers, sinon optez pour la stratégie de fusion.

39
ThanksForAllTheFish

git checkout --[ours/theirs] . fera ce que vous voulez, tant que vous êtes à la racine de tous les conflits. Les nôtres/leurs ne concernent que les fichiers non fusionnés, vous ne devriez donc pas avoir à grep/find/conflits en particulier.

28
Cory Petosky
git diff --name-only --diff-filter=U | xargs git checkout --theirs

Semble faire le travail. Notez que vous devez être connecté au répertoire racine du dépôt git pour y parvenir.

12
Peter

Si quelqu'un cherche simplement à tout écraser sur une branche (par exemple, maître) avec le contenu d'une autre, il existe un moyen plus simple:

git merge master --strategy=ours

Merci à https://stackoverflow.com/a/1295232/560114

Ou pour le contraire, voir Existe-t-il une version "leur" de "git merge -s our"?

0
Matt Browne
function gitcheckoutall() {
    git diff --name-only --diff-filter=U | sed 's/^/"/;s/$/"/' | xargs git checkout --$1
}

J'ai ajouté cette fonction dans .zshrc file.

Utilisez-les de cette façon: gitcheckoutall theirs ou gitcheckoutall ours

0
iWheelBuy