La résolution d'un 'plus' de conflit de fusion dans git?
Je suis la relocalisation dans git, et un conflit que j'obtiens est "à la fois ajoutée" - qui est, exactement le même nom de fichier a été ajouté de façon indépendante dans ma branche, et la branche je suis rebasage sur. 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 est-il une manière que je peux le faire simplement à partir de la ligne de commande? Si je git rm src/MyFile.cs
, comment git savoir quelle version du fichier que je veux supprimer et que je veux garder?
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez
git rm
git va supprimer toutes les versions du chemin de l'index afin de résoudre votre action va vous laisser sans une ou l'autre version.Vous pouvez utiliser
git checkout --ours src/MyFile.cs
de choisir la version de la branche sur laquelle vous êtes rebasage ougit checkout --theirs src/MyFile.cs
de choisir la version de la branche sur laquelle vous êtes rebasage.Si vous voulez un mélange, vous devez utiliser un outil de fusion ou modifier manuellement.
git checkout --ours someFile
il peut sembler comme Il n'a rien fait quand vous faites git status. Rappelez-vous Juste de ce faire par la suite.git add someFile
git status
Je trouve parfois à confusion à l'aide de la
--theirs
et--ours
options pour identifier l'endroit où le fichier de. La plupart du temps, le mien sera dans la branche je suis rebasage qui est visé par--theirs
!Vous pouvez également utiliser
git checkout <tree-ish> -- src/MyFile.cs
Où la
<tree-ish>
peut être remplacé 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
Lorsque vous faites ...
git checkout --ours someFile
Il peut sembler comme il n'a rien fait quand vous faites git status.
Rappelez-vous juste de ce faire par la suite.