web-dev-qa-db-fra.com

Comment obtenir "leurs" changements au milieu d'une rebase Git conflictuelle?

J'ai des branches en conflit, branche2 dérivée de branche1.

Disons que lorsque je rebase branch2 sur le branch1 actuel, tout en résolvant les conflits, je décide de prendre certains (pas tous) de "leurs" fichiers (c'est-à-dire branch1) comme si. Comment je fais ça?

J'ai essayé:

git checkout branch1:foo/bar.Java
fatal: reference is not a tree: TS-modules-tmp:foo/bar.Java

git checkout refs/heads/branch1:foo/bar.Java
fatal: reference is not a tree: refs/heads/TS-modules-tmp:foo/bar.Java
322
Ondra Žižka

Vous voulez utiliser:

git checkout --ours foo/bar.Java
git add foo/bar.Java

Si vous rebassez une branche feature_x contre master (c’est-à-dire que vous exécutez git rebase master sur une branche feature_x), lors du rebasage ours fait référence à master et theirs à feature_x.

Comme indiqué dans le docs git-rebase :

Notez qu'une fusion de refonte fonctionne en relisant chaque validation de la branche active située au-dessus de la branche. Pour cette raison, lorsqu'un conflit de fusion survient, la partie signalée comme la nôtre est la série jusqu'ici rebasée, commençant par <en amont>, et leur branche active. En d'autres termes, les côtés sont échangés.

Pour plus de détails lisez ce fil .

455
iGEL

Si vous voulez extraire un fichier particulier d’une autre branche, faites simplement

git checkout branch1 -- filenamefoo.txt

Cela va tirer une version du fichier d'une branche dans l'arborescence actuelle

1
Adrian Cornish