J'ai essayé de fusionner un fichier dans la ligne de commande à l'aide de Git, lorsqu'un message d'erreur est apparu m'indiquant que la fusion avait été abandonnée.
Je pensais que c'était la fin, mais j'ai ensuite réalisé qu'il y avait des gitmarks dans mes fichiers. Ainsi:
start =
expression
validchar =
[0-9a-zA-Z_?!+\-=@#$%^&*/.]
integer =
<<<<<<< HEAD
digits:[0-9]+
{ return digits.join(""); }
=======
sign:"-"* digits:[0-9]+
{ return sign + digits.join(""); }
>>>>>>> gh-pages
Les fichiers n'ont pas été modifiés par moi et affichent les lignes insérées avec:
- HEAD après moins de signes (
<<<<<<< HEAD
) - lignes de code modifié
- une chaîne de signes égal (
=======
) - la nouvelle version du code
- une autre ligne commençant par des signes supérieur à et le nom de la branche (
>>>>>>> gh-pages
)
Le pire, c'est que le contenu du fichier n'est plus en ordre. Est-ce que quelqu'un sait comment je ramène ces fichiers à la normale, et les modifications que j'ai apportées dans la branche gh ont fusionné dans la branche master?
la source
gh-pages
version, donc vous supprimeriez simplement les éléments de<<<<<<
à======
et supprimeriez également la>>>>>>
ligne unique , laissant les deux lignes de code réel entre=======
et>>>>>>
.Commencez absolument par «git status» pour voir ce que vous avez. Si vous avez abandonné une fusion (ou si une fusion a été interrompue) et que vous avez des fichiers en conflit dans le répertoire de travail, c'est que quelque chose s'est mal passé. Le statut Git vous indiquera où vous êtes. Après cela, vous avez un certain nombre d'options. Vous devez résoudre le commit de fusion soit manuellement, ce qui peut être difficile, soit en utilisant un outil comme:
L'outil de fusion fonctionnera si vos fichiers sont répertoriés comme nécessitant une fusion.
Vous pouvez également effectuer l'une des opérations suivantes:
Vous pouvez voir les différentes versions en utilisant la syntaxe: 1: filename. Voir ici pour une explication. Mais tout ce qui précède suppose que «git status» montre les fichiers comme nécessitant une fusion.
Enfin, vous avez toujours la possibilité de:
la source
git status
appuyer le conseil "Commencez avec pour voir ce que vous avez": il est courant dans certains cercles de blâmer Git pour sa complexité imaginaire, mais en fait, une lecture attentive du résultat degit status
suffit pour comprendre ce qu'il faut faire ensuite dans les situations les plus courantes. Par conséquent, vraiment: si quelque chose ne va pas, arrêtez, lisezgit status
, réfléchissez.Toutes les réponses sont correctes, mais si vous souhaitez supprimer automatiquement toutes les marques de conflit et que vous souhaitez modifier automatiquement les fichiers pour conserver HEAD, vous pouvez créer votre propre script bash comme: -
Exemple de script:
# vim /usr/sbin/solve.git
(Ajouter après)
# chmod 755 /usr/sbin/solve.git
et exécutez-le simplement dans votre dépôt / chemin GIT pour résoudre:
$ cd <path_to_repo>
$ solve.git
Remarque: - Les extensions de fichiers mentionnées ci-dessus sont php, css, js, html, svg et txt.
la source
Dans Atom, j'ai eu le problème que certains fichiers ne sauvegardaient pas les conflits de fusion résolus sur le lecteur, je devais donc cliquer manuellement sur "Enregistrer". Il m'a fallu un certain temps pour comprendre.
la source
Je viens de cette question . Et je voulais une méthode automatisée de fusion des fichiers à moitié fusionnés, au lieu de modifier manuellement les fichiers ( comme suggéré dans d'autres réponses, ce que je ne suis pas vraiment à l'aise de faire ). Voici donc ce que j'ai fini par faire via netbeans, mais cela peut également être fait via la ligne de commande.
Maintenant, gardez à l'esprit que cela ne fonctionne que si immédiatement après le
merge->add->commit
, vous vous rendez compte que vous vous êtes trompé et que vous voulez recommencer le processus.ÉTAPE 1: réinitialisez à un commit précédent.
ÉTAPE 2: réessayer de fusionner la branche
À ce stade, vous serez invité avec la fenêtre de fusion si vous utilisez une interface graphique. et vous pouvez ensuite procéder normalement.
la source