web-dev-qa-db-fra.com

forcer git à accepter les changements de cerise sur le gâteau

J'ai fait le choix parmi une critique gerrit dans ma branche. Dans la révision du code gerrit, j'ai deux ensembles de correctifs et j'en ai choisi un avant, donc maintenant je veux faire le deuxième ensemble de correctifs, mais il y a des conflits, comment puis-je forcer git à accepter toutes les modifications? Merci!

36
Jiang

Vous pouvez lui dire de toujours préférer les modifications du commit que vous choisissez:

git cherry-pick commitish --strategy-option theirs

commitish peut être un hachage SHA-1 d'un commit, ou un branch-name pour le dernier commit de cette branche, branch-name~1 pour le commit avant ça etc.

Si vous voulez faire l'inverse, utilisez:

git cherry-pick commitish --strategy-option ours

Le raccourci pour --strategy-option est -X (en haut cas X).

74
CoDEmanX

git cherry-pick -X theirs <commit-hash-you-want-to-force-cherry-pick-from>

Mon workflow habituel est le suivant:

En supposant que je suis sur le master et que je viens de faire un commit.

  1. J'attrape le hachage de validation de ce commit.
  2. Ensuite, passez à la succursale que je souhaite avoir.
  3. Exécutez ensuite la commande ci-dessus, par ex. git cherry-pick -X theirs 5cf3412
3
tallamjr

vous pouvez le forcer brutalement avec quelque chose comme ceci:

git show cb1e6a:path/to/filename > path/to/filename
git add path/to/filename
git commit

mais je suis sûr qu'il existe un moyen plus simple.

0
Jason B

Si vous êtes déjà en situation de conflit, faites simplement

# add only conflicting files here
git checkout --theirs path/to/file
git add path/to/file
git cherry-pick --continue
0
geek-merlin