51 votes

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

Après Xcode a mis à jour vers la version 8.0 (8A218a), j'ai un problème en tirant des changements de référentiel git à partir de Xcode seulement 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 suis en mesure de s'engager, tirer et pousser.

Mais j'ai compris que chaque fois que nous avons un conflit dans certains dossiers, Xcode n'est pas en montrant des conflits de plus. Il ferme juste la traction fenêtre pop-up sans afficher le programme de résolution de conflits de la fenêtre. Pas d'info ou quoi que ce soit. Je ne vois pas l'

Pull succès

message. Et je ne peux pas pousser mon commit (parce que les changements ne sont pas tiré) de faire passer le message:

Assurez-vous que toutes les modifications ont été tirés à partir du dépôt distant et essayez à nouveau

J'ai essayé de tirer à l'aide du terminal, mais le fichier en conflit se foiré avec git messages de montrer la mienne et d'autres personnes les changements dans le même fichier en conflit le long de ces git messages. Et les fichiers que d'autres personnes sont au travail sont désormais montré que mes propres modifications/ajouts.

J'ai aussi essayé la mise à jour de git pour la version la plus récente, qui est actuellement 2.10.0. Pas de chance non plus.

Donc j'arrive à la fin de la suppression de mon exemplaire et le clonage de la dernière et de réappliquer les modifications que j'ai apportées, ce qui est très ennuyeux.

Quelqu'un aurait-il une solution pour cela?

EDIT: Voici ce que vous pouvez faire en tant que solution de contournement en utilisant le terminal:

  1. Ouvrir un terminal et indiquer au système où Xcode utilitaires live:

    sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
    
  2. Set "opendiff" comme valeur par défaut mergetool à l'échelle mondiale:

    git config --global merge.tool opendiff
    
  3. Ouvrez Xcode mergetool manuellement et de se débarrasser du conflit de la manière habituelle:

    git mergetool
    
  4. Enregistrer les modifications, commit, push.

2voto

Wayne Chen Points 130

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

git fetch origin
git pull origin master

From ssh://gitosis@example.com:22/projectname
 * branch            master     -> FETCH_HEAD
Updating a030c3a..ee25213
error: Entry 'filename.c' not uptodate. Cannot merge.

Afin d'obtenir la date et l'essayer à nouveau, mais y a un conflit:

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

From ssh://gitosis@example.com: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 prendre un regard sur les changements:

git mergetool

utilisation mergetool de 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 nous essayons une dernière fois

git pull origin master

From ssh://gitosis@example.com:22/projectname
 * branch            master     -> FETCH_HEAD
Already up-to-date.

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

1voto

Arik Segal Points 466

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

Sortie Xcode

Ouvrir un Terminal et d'un cd sur le projet du dossier

git checkout -- .

git pull

Chercher à la sortie de la commande pull. Il devrait annoncer qu'il y a un conflit dans l'un des fichiers. Ouvrez ce fichier dans un éditeur externe (pas de Xcode). Le fichier doit maintenant contenir des marqueurs, décrivant le conflit (ils ont été ajoutés par GIT) Les marqueurs ressembler à ceci:

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

Supprimer les marqueurs et de résoudre le conflit

git add [nom de fichier]

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

git push

1voto

Karthick Vadivel Points 166

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.

0voto

dory daniel Points 380

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

-1voto

Marin Bencevic Points 7

Cela m’arrive encore dans Xcode 8.1, en utilisant Github.

Faire git fetch dans le terminal, puis extraire à nouveau de Xcode semble résoudre le problème pour moi.

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