Je rebase dans git, et un conflit que j'obtiens est «tous 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
dit moi:
# 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 la suivante: comment résoudre ce problème? Dois-je utiliser un outil de fusion ou y a-t-il un moyen de le faire uniquement à partir de la ligne de commande? Si je git rm src/MyFile.cs
, comment git sait quelle version de fichier je veux supprimer et laquelle je veux conserver?
git checkout --ours someFile
Il peut sembler que cela n'a rien fait lors de l'exécution de l'état git. N'oubliez pas de le faire par la suite.git add someFile
git status
Je trouve parfois déroutant d'utiliser les options
--theirs
et--ours
pour identifier la provenance du fichier. La plupart du temps, le mien sera dans la branche que je rebase à laquelle il est fait référence--theirs
!Vous pouvez aussi utiliser
git checkout <tree-ish> -- src/MyFile.cs
Où le
<tree-ish>
peut être remplacé soit par le nom de la branche, soit par le commit-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
la source
En faisant ...
git checkout --ours someFile
Il peut sembler que cela n'a rien fait lors de l'exécution de l'état git.
N'oubliez pas de le faire par la suite.
la source