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.
Vous pouvez aussi -Xours
ou -Xtheirs
avec git merge
. Alors:
git reset --hard HEAD
)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.
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.
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.
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"?
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