130 votes

Résoudre un conflit de fusion 'à la fois ajouté' dans git?

Je me rebase dans git, et un conflit que je reçois est "les deux ajoutés" - c'est-à-dire que le même nom de fichier a été ajouté indépendamment dans ma branche, et dans la branche sur laquelle je rebase. git status me dit:

 # Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       both added:         src/MyFile.cs
 

Ma question est, comment puis-je résoudre ce problème? Dois-je utiliser un outil de fusion ou y at-il un moyen de le faire uniquement à partir de la ligne de commande? Si je git rm src/MyFile.cs , comment git sait-il quelle version de fichier je souhaite supprimer et quelle version je veux conserver?

130voto

Charles Bailey Points 244082

Si vous utilisez git rm git supprimera toutes les versions de ce chemin de l'index, votre action de résolution vous laissera sans version.

Vous pouvez utiliser git checkout --ours src/MyFile.cs pour choisir la version de la branche sur laquelle vous rebassez ou git checkout --theirs src/MyFile.cs pour choisir la version de la branche sur laquelle vous rebassez.

Si vous souhaitez un mélange, vous devez utiliser un outil de fusion ou le modifier manuellement.

69voto

Anas Alkhatib Points 458

Je trouve parfois à confusion à l'aide de l' --theirs et --ours options pour déterminer la localisation du fichier. La plupart du temps, le mien sera dans la branche je suis rebasage qui est visé par l' --theirs!

Vous pouvez également utiliser git checkout <tree-ish> -- src/MyFile.cs

Où l' <tree-ish> peut être remplacée soit par le nom de la branche ou de commettre des-id qui contient le fichier que vous souhaitez conserver.

git checkout 6a363d8 -- src/MyFile.cs

git checkout my_branch -- src/MyFile.cs

git checkout HEAD -- src/MyFile.cs

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X