web-dev-qa-db-fra.com

Le contrôle de source Xcode 8 ne montre pas les conflits

Une fois que Xcode a été mis à jour vers la version 8.0 (8A218a), je ne parviens pas à extraire les modifications du référentiel git de Xcode uniquement lorsque certains fichiers sont en conflit. Nous travaillons tous sur la même branche.

Tant qu'il n'y a pas de conflits, tout fonctionne parfaitement et je peux m'engager, tirer et pousser. 

Mais j’ai compris que chaque fois qu’il y avait un conflit dans certains fichiers, Xcode ne montre plus de conflits. Il ferme simplement la fenêtre déroulante sans afficher la fenêtre de résolution des conflits. Aucune information ou quoi que ce soit. Je ne vois pas le

Tirez avec succès

message. Et je ne peux pas pousser mon commit (car les modifications ne sont pas tirées) pour obtenir le message:

Assurez-vous que toutes les modifications ont été extraites du référentiel distant et réessayer

J'ai essayé de tirer à l'aide de terminal, mais le fichier en conflit est gâché par des messages git indiquant à moi et à d'autres personnes les modifications apportées dans le même fichier en conflit le long de ces messages. Et les fichiers sur lesquels d'autres personnes travaillaient sont maintenant affichés comme mes propres modifications/ajouts.

J'ai également essayé de mettre à jour git vers la version la plus récente, qui est actuellement la 2.10.0. Pas de chance non plus.

Je finis donc par supprimer ma copie, cloner le dernier en date et appliquer à nouveau les modifications apportées, ce qui est très pénible.

Quelqu'un at-il une solution pour cela?

EDIT: Voici ce que vous pouvez faire en tant que solution de contournement à l'aide du terminal

  1. Ouvrez le terminal et indiquez au système où résident les utilitaires Xcode: 

    Sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
    
  2. Définissez "opendiff" comme l'outil de fusion par défaut globalement: 

    git config --global merge.tool opendiff
    
  3. Ouvrez Xcode mergetool manuellement et éliminez le conflit de la manière habituelle: 

    git mergetool
    
  4. Enregistrer les modifications, commettre, pousser.

51
Despotovic

J'utilise git dans Terminal pour résoudre ce problème, mergetool est utilisé .. __, d'abord, je tire quelques changements, mais oups, pas à jour:

git fetch Origin
git pull Origin master

From ssh://[email protected]:22/projectname
 * branch            master     -> FETCH_HEAD
Updating a030c3a..ee25213
error: Entry 'filename.c' not uptodate. Cannot merge.

Alors soyez à jour et essayez à nouveau, mais ayez un conflit:

git add filename.c
git commit -m "made some wild and crazy changes"
git pull Origin master

From ssh://[email protected]:22/projectname
 * branch            master     -> FETCH_HEAD
Auto-merging filename.c
CONFLICT (content): Merge conflict in filename.c
Automatic merge failed; fix conflicts and then commit the result.

Je décide donc de regarder les changements:

git mergetool

utiliser mergetool pour fusionner le conflit

changes...no...their changes...
git checkout --ours filename.c
git checkout --theirs filename.c
git add filename.c
git commit -m "using theirs"

Et puis on essaie une dernière fois

git pull Origin master

From ssh://[email protected]:22/projectname
 * branch            master     -> FETCH_HEAD
Already up-to-date.

réponse de: Comment résoudre les conflits de fusion dans Git?

2
Wayne Chen

La séquence d'actions suivante résout ce problème:

Quitter Xcode

Ouvrez Terminal et cd dans le dossier du projet

git checkout -.

git pull

Regardez le résultat de la commande pull. Il devrait annoncer l'existence d'un conflit dans l'un des fichiers . Ouvrez ce fichier dans un éditeur externe (pas Xcode). Le fichier doit maintenant contenir des marqueurs spéciaux décrivant le conflit (ils ont été ajoutés par GIT) Les marqueurs ressemblent à ceci:

<<<<<<< HEAD:file.txt
Hello world
=======
Goodbye
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt

Supprimer les marqueurs et résoudre le conflit

git add [nom du fichier]

git commit -m "conflit dans [nom du fichier] résolu"

git Push

1
Arik Segal

Veuillez mettre à jour vers Xcode 8.2.1

J'ai eu le même problème. Mais il est résolu une fois que j'ai mis à jour ma version de Xcode vers la version 8.2.1.

Aujourd'hui, j'ai résolu tous les conflits auxquels je faisais face avec Xcode version 8.1.

1
Karthick Vadivel

mettez à jour votre Xcode avec la dernière version et assurez-vous que vos partenaires ont également la même version

0
dory daniel