git merge récursive leur, comment ça fonctionne?

j'ai un petit problème. Nous avons notre propre CMS qui utilise git pour la collaboration et le versioning.

maintenant j'ai deux dépôts git A et B, A qui est un projet et B qui est le CMS lui-même. Maintenant je veux mettre B EN A, mais quand je le fais, j'ai beaucoup de conflits de fusion et la solution pour les conflits est toujours d'utiliser les trucs de B.

Maintenant ce que je pense que j'ai besoin est

git merge <branch> -s recursive theirs <commit>

parce que je veux fusionner et quand il y a un il devrait être forcé d'utiliser la solution de B. Mais je ne peux pas le faire fonctionner. Il garde toujours de me dire fatal: 'theirs' does not point to a commit.

recursive theirs j'ai trouvé ici.

est ce que quelqu'un sait ce que je fais de mal?

28
demandé sur florisla 2010-02-15 21:44:40

2 réponses

vous devez utiliser ce formulaire pour passer les options de stratégie de fusion:

git merge -s recursive -Xtheirs

assurez-vous également que votre version supporte -Xtheirs, qui est un assez caractéristique récente(?)

53
répondu u0b34a0f6ae 2010-02-16 01:47:21

je pense que la raison de son échec est que vous spécifiez "recursive leur" comme stratégie. "récursive "est une stratégie, et quand vous mettez un espace après elle," la leur " est interprété comme quelque chose que git doit fusionner votre copie de travail avec (par ex. une autre branche ou refspec).

je pense que vous ne serez pas en mesure de préciser une stratégie exactement comme ce que vous voulez. Il y a une stratégie appelée "la nôtre" qui est le contraire de ce que vous voulez.

Le modèle utilisé dans ce cas, il s'agit soit de fusionner, soit de renouer avec le dépôt "B". À partir de la copie de travail du dépôt" A", vous effectuerez un rebase, si possible (cela pourrait ne pas être possible, si vous partagez déjà la git repo avec d'autres développeurs). Un rebase retournerait essentiellement le dépôt A à un commit commun dans les deux dépôts, appliquerait " B "commits, puis" a " commits sur le dessus. Vous résoudriez les conflits de fusion en cours de route.

une Fois que vous allez à travers la douleur de la fusion ou le rebasement vers le dépôt "B", les fusions futures seront moins douloureuses.

2
répondu Jess Bowers 2010-02-15 21:38:40