J'ai dirigé un git pull
qui s'est terminé par un conflit. J'ai résolu le conflit et tout va bien maintenant (j'ai également utilisé mergetool).
Lorsque je valide le fichier résolu avec git commit file.php -m "message"
j'obtiens l'erreur:
fatal: cannot do a partial commit during a merge.
J'ai eu le même problème avant et l'utilisation -a
de commit a parfaitement fonctionné. Je pense que ce n'est pas le moyen idéal parce que je ne veux pas commettre tous les changements. Je veux valider les fichiers séparément avec des commentaires séparés. Comment puis je faire ça? Pourquoi git ne permet-il pas aux utilisateurs de valider des fichiers séparément après une fusion? Je n'ai pas pu trouver de réponse satisfaisante à ce problème.
Réponses:
J'ai trouvé que l'ajout de "-i" à la commande commit résout ce problème pour moi. Le -i lui dit essentiellement de mettre en scène des fichiers supplémentaires avant de valider. C'est:
la source
Stage additional files
dire?git add
, ce qui faitgit commit
échouer. L'ajout-i
dirait à git d'ajouter et de valider en même temps. Je ne sais toujours pas pourquoi, mais cela semble logique.Cela a fonctionné pour moi. Vous pouvez également essayer ceci.
la source
Vous pouvez utiliser
git commit -i
pour la plupart des cas, mais au cas où cela ne fonctionnerait pasTu dois faire
git commit -m "your_merge_message"
. Pendant un conflit de fusion, vous ne pouvez pas fusionner un seul fichier, vous devez doncgit add your_file.txt
)git commit -m "your_merge_message"
la source
Vous avez probablement eu un conflit dans quelque chose que vous n'avez pas organisé pour la validation. git ne vous laissera pas valider les choses indépendamment (car tout cela fait partie de la fusion, je suppose), vous devez donc
git add
ce fichier et ensuitegit commit -m "Merge conflict resolution"
. Le-i
drapeau pourgit commit
fait l'ajout pour vous.la source
commit -i
travaillé, mais pasgit add; git commit
Je l'ai obtenu lorsque j'ai oublié le
-m
commit dans mon git lors de la résolution d'un conflit de fusion git.devrait être
la source
Comme le message d'erreur l'indique, vous ne pouvez pas effectuer de validation partielle après une fusion. Au lieu de
file.php
valider, vous devez valider toutes les modifications.Cela devrait fonctionner.
la source
Votre fusion s'est arrêtée au milieu de l'action. Vous devez ajouter vos fichiers, puis 'git commit':
git add file_1.php file_2.php file_3.php git commit
À votre santé
la source
Si vous souhaitez simplement abandonner tous les fichiers de sélection et de validation dans les ensembles que vous souhaitez,
vous y amène.
La réinitialisation logicielle déplace le pointeur pointant vers HEAD actuel vers le commit (ish) que vous avez donné, mais ne modifie pas les fichiers. Une réinitialisation matérielle déplacerait le pointeur et ramènerait également tous les fichiers à l'état dans ce commit (ish). Cela signifie qu'avec la réinitialisation logicielle, vous pouvez effacer le statut de fusion, mais conserver les modifications apportées aux fichiers réels, puis les valider ou les réinitialiser individuellement à votre convenance.
la source
la source
Pour moi, cela s'est produit dans SourceTree lorsque j'ai essayé de valider une fusion avant de résoudre tous les fichiers. J'ai ensuite marqué le dernier fichier résolu et pourtant il m'a toujours donné cette erreur lors de la tentative de validation. J'ai fermé SourceTree et l'ai rouvert, puis il s'est bien engagé.
la source
J'ai résolu cela avec une approche complètement différente, en utilisant uniquement le contrôle de source de Xcode.
Contexte: Une autre équipe a poussé les modifications du référentiel Git distant (via Beanstalk). De mon côté, les fichiers .xcodeproj sont entrés dans un répertoire différent et les modifications n'ont pas été prises. Plus tard, lorsque j'ai essayé de valider, j'ai reçu une erreur de conflit d'arbre dans Xcode.
Étant presque impossible à corriger en utilisant Xcode, j'ai remplacé le
.xcodeproj
fichier par une version téléchargée depuis le serveur Git. Le résultat ... le projet Xcode a semblé s'éclaircir, mais toutes les mises à jour du pull corrompu se présentaient comme des modifications que j'avais apportées et étaient mises en scène pour une validation.Cependant, lorsque j'essaie de valider, j'ai reçu la même erreur «fatal: impossible de faire une validation partielle lors d'une fusion», décrite ici.
Voici comment j'ai résolu le problème ... (Maintenant, comprenez que je suis un programmeur débutant, donc je pourrais manquer de compréhension ... mais mon ignorance m'a amené à trouver une autre façon de le faire.) Tout d'abord, j'ai cloné mon maître Branche dans une branche secondaire et est passée à cette branche. J'ai ensuite créé une copie de travail et placé le répertoire dans cette copie de travail en dehors du répertoire de projet d'origine. (Je ne sais pas si cela était nécessaire, mais c'est ce que j'ai fait en lisant d'autres techniques de dépannage.) Ensuite, j'ai changé de branche vers le maître, où j'ai réalisé que tous mes fichiers intermédiaires (modifications apportées à Commit) avaient disparu. Pour m'assurer que tous les fichiers ont été mis à jour avec les dernières modifications apportées par l'autre partie, j'ai créé une nouvelle branche appelée ThirdBranch, qui a dupliqué tous les fichiers, Poussez-le sur le serveur Git et laissez Beanstalk comparer ma version de serveur de la branche principale à la branche ThirdBrach que je viens de pousser (ligne par ligne), et toutes les modifications apportées par l'autre partie étaient présentes sur mon Xcode. Cela signifiait que mon référentiel maître et le référentiel maître Git étaient les mêmes, ce qui vérifie que j'ai résolu le problème en utilisant Xcode, uniquement.
Ne me demandez pas comment, au-delà de ce que je viens de décrire ... et comblez certainement les lacunes que j'ai omises. Je suis nouveau dans ce domaine et je ne comprends pas tout. Peut-être qu'un programmeur expérimenté peut séparer les informations non pertinentes des informations pertinentes et recréer cette technique plus clairement, ce qui explique en partie pourquoi je poste cela.
Il s'agit d'une réponse en double à la question en double comme à: Échec de la fusion Xcode Git est bloqué
la source
Lors d'une fusion, Git veut garder une trace des branches parentes pour toutes sortes de raisons. Ce que vous voulez faire n'est pas une fusion comme git le voit. Vous voudrez probablement faire un rebasage ou une sélection manuelle.
la source
git commit -i -m 'merge message'
n'a pas fonctionné pour moi. Ça disait:fatal: No paths with --include/--only does not make sense.
FWIW, je suis arrivé ici via cette question connexe parce que je recevais ce message:
fatal: You have not concluded your merge (MERGE_HEAD exists).
J'ai également essayé mergetool, qui a dit
No files need merging
. Très perturbant! Donc, MERGE_HEAD n'est pas dans un fichier qui doit être fusionné - ??Enfin, j'ai utilisé cette astuce pour ajouter uniquement les fichiers modifiés (je ne voulais pas ajouter tous les fichiers dans mon arborescence, car j'en ai certains que je veux garder non suivis):
git ls-files -m | xargs git add
Puis j'ai finalement (!) Pu m'engager et pousser. Ce serait sûr que git vous donne de meilleurs conseils sur ce qu'il faut faire dans ces situations.
la source
S'il se trouve dans l' arborescence source , nous devons explicitement marquer un fichier comme résolu après la résolution des conflits. Sélectionnez le fichier qui vient d'être résolu sans conflits. Puis Actions -> Résoudre les conflits -> Marquer comme résolu . Si vous avez plusieurs fichiers, faites de même pour tous. Engagez-vous maintenant.
la source
Après avoir lu tous les commentaires. c'était ma résolution:
je devais "l'ajouter" encore que valider:
la source
Si vous utilisez l'arborescence des sources ou une autre interface graphique, assurez-vous que tous les fichiers sont vérifiés (après la fusion).
la source
Parfois pendant la fusion, si des conflits surviennent et que des deltas nécessitent une résolution manuelle. Dans ce cas, corrigez la résolution manuelle des fichiers mentionnés.
Maintenant, si vous émettez,
Vous verrez une sortie comme
Depuis, vous avez déjà organisé la validation, il vous suffit d'émettre
Et votre commit se fera sans aucun problème.
la source