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

Je refixe en git, et un conflit que je reçois est «ajouté» – c’est-à-dire que le même nom de fichier a été ajouté de manière indépendante dans ma twig et dans la twig sur laquelle je me rebase. git status me dit:

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

Ma question est la suivante: comment puis-je résoudre ce problème? Dois-je utiliser un outil de fusion ou existe-t-il un moyen de le faire depuis la ligne de commande? Si je veux git rm src/MyFile.cs , comment git sait-il quelle version de fichier je veux supprimer et que je veux conserver?

Si vous utilisez git rm git, toutes les versions de ce chemin seront supprimées de l’index afin que votre action de résolution ne vous laisse aucune des versions.

Vous pouvez utiliser git checkout --ours src/MyFile.cs pour choisir la version de la twig sur laquelle vous effectuez un changement de nom ou la git checkout --theirs src/MyFile.cs .

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

Je trouve parfois déroutant d’utiliser les options --theirs et --ours pour identifier l’origine du fichier. La plupart du temps, les miens seront dans la twig que je repasse, à laquelle ils se --theirs .

Vous pouvez également utiliser git checkout -- src/MyFile.cs

peut être remplacé par le nom de twig ou l’ID de validation 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

En faisant …

git checkout --ours someFile

Cela peut sembler ne rien faire quand on fait le statut de git.

N’oubliez pas de faire cela après.

 git add someFile git status