2012-11-08 5 views
0

Je dois malheureusement travailler avec un dépôt SVN au travail. Je fais cela via git-svn. Maintenant, après que je l'ai apporté des changements, les commis et mon git-svn alias « pull »:Git-svn fusionner et checkout --theirs

!git svn fetch && git svn rebase -l 

Maintenant, s'il y a un conflit de fusion que je ne veux pas résoudre, mon instinct est de faire:

git checkout --theirs conflicting_file 
git add conflicting_file 
git rebase --continue 

Mais, maintenant, au lieu d'avoir le conflicting_file d'un autre développeur, il semble qu'il ya maintenant conflicting_file qui était auparavant dans mon index.

Que se passe-t-il exactement ici et quelle est la bonne façon de procéder?

+1

Est-ce que 'git checkout --ours conflicting_file' fonctionne? Peut-être qu'ils sont mélangés. – poke

Répondre

2

Je pense que @poke avait raison: "leur" et "notre" sont inversés dans votre esprit par rapport au comportement de git. Quand vous faites le svn rebase, votre branche actuelle ("notre") est la réplication de la branche svn et les modifications qui sont fusionnées/rebasées dans ("les leurs") sont celles que vous avez faites localement. Quand j'utilise git-svn dans le même but, je place mon contenu sur une branche git séparée et je l'amène uniquement dans la branche svn quand je suis prêt à faire un 'svn dcommit'. Faire cela rendrait plus clair le problème de la leur/la nôtre et vous éviterait également de devoir gérer les conflits jusqu'à ce que vous soyez prêt à le faire.