Comment ignorer le message d'erreur suivant sur Git Pull?
Vos modifications locales dans les fichiers suivants seraient écrasées par la fusion
Et si je veux les écraser?
J'ai essayé des choses comme git pull -f
, mais rien ne fonctionne.
Pour être clair, je veux seulement écraser des modifications spécifiques, pas tout.
git config core.fileMode false
enregistrer mes tempsRéponses:
Si vous souhaitez supprimer toutes les modifications locales - y compris les fichiers non suivis par git - de votre copie de travail, il vous suffit de les ranger:
Si vous n'en avez plus besoin, vous pouvez maintenant laisser tomber cette réserve:
Si vous ne voulez pas cacher les modifications que vous avez déjà mises en place - par exemple avec
git add
- alors ajoutez l'option--keep-index
. Notez cependant que cela empêchera toujours la fusion si ces modifications par étapes entrent en collision avec celles en amont.Si vous souhaitez remplacer uniquement des parties spécifiques de vos modifications locales, il existe deux possibilités:
Validez tout ce que vous ne voulez pas écraser et utilisez la méthode ci-dessus pour le reste.
Utilisez
git checkout path/to/file/to/revert
pour les modifications que vous souhaitez remplacer. Assurez-vous que le fichier n'est pas transféré viagit reset HEAD path/to/file/to/revert
.la source
git checkout HEAD^ path/to/file/to/revert
. L'utilisation de HEAD ^ a fait toute la différence.save --keep-index
".D'accord avec l'aide des deux autres réponses, j'ai trouvé une solution directe:
la source
Cela fonctionne pour moi pour remplacer toutes les modifications locales et ne nécessite pas d'identité:
la source
Voici une solution qui supprime les modifications par étapes:
la source
Vous pouvez soit valider vos modifications avant d'effectuer la fusion, soit les cacher:
git stash save
git merge origin/master
git stash pop
la source
--autostash
option n'est disponible qu'avec l'--rebase
option (Si vous souhaitez supprimer vos modifications locales sur un fichier, vous pouvez procéder comme suit:
Ensuite, vous pouvez remplacer le fichier [s] par la dernière version en faisant simplement:
la source
git reset HEAD~
puis faire legit checkout
git checkout -- <file>
échoue avecerror: pathspec '<file>' did not match any file(s) known to git.
Si votre référentiel contient quelques fichiers qui sont supprimés de
master
:git checkout master
git fetch origin
git reset --hard origin/master
git checkout -b newbranch
la source
Parfois, rien de tout cela ne fonctionne. De façon ennuyeuse, en raison de la chose LF, je pense que ce qui fonctionnera est la suppression des fichiers, puis la traction. Ce n'est pas que je recommande cette solution, mais si le fichier n'existe pas, git ne vous informera pas inutilement que vos modifications (qui ne sont peut-être même pas des modifications) seront annulées et vous permettront de continuer.
À utiliser à vos risques et périls.
la source
git stash save --keep-index
n'a pas fonctionné pour moi.la commande ci-dessous a fonctionné comme prévu.
Il remplace toutes les modifications locales si vous n'en avez pas besoin.
la source
Tellement de réponses ici que je déteste en ajouter une autre, mais toutes les réponses ci-dessus sont plus maladroites qu'elles ne devraient l'être. Je dois le faire tout le temps car Git semble devenir confus et dit que j'ai modifié des fichiers qui n'ont pas changé (ne peut pas revenir en arrière parce qu'ils n'ont pas changé, mais je ne peux pas tirer parce qu'ils sont censés avoir changé) Plus simple et le plus rapide que j'ai trouvé jusqu'à présent est:
la source
Dans le récent Git, vous pouvez ajouter la commande
-r
/--rebase
onpull
pour rebaser votre branche actuelle au-dessus de la branche en amont après la récupération. L'avertissement devrait disparaître, mais il y a un risque que vous ayez des conflits que vous devrez résoudre.Vous pouvez également extraire différentes branches avec force, puis revenir à
master
nouveau, par exemple:Tirez-le à nouveau comme d'habitude:
L'utilisation de cette méthode peut vous faire économiser du temps de stashing (
git stash
) et d'éventuels problèmes d'autorisation, de réinitialisation de fichiers (git reset HEAD --hard
), de suppression de fichiers (git clean -fd
), etc.la source
Ce problème est dû au fait que vous avez modifié localement les fichiers / s et que les mêmes fichiers existent avec les modifications dans le référentiel Git, donc avant de tirer / pousser, vous aurez besoin de cacher les modifications locales:
Pour remplacer les modifications locales d'un seul fichier:
Pour écraser toutes les modifications locales (modifications dans tous les fichiers):
Ce problème peut également être dû au fait que vous êtes sur une branche qui n'est pas fusionnée avec la branche principale.
la source
git reset --hard && git clean -df
Attention : Cela réinitialisera et supprimera tous les fichiers non suivis.
la source
Vous pouvez l'utiliser pour remplacer le fichier
la source
La meilleure façon de résoudre ce problème est:
Après cela, vous pouvez remplacer le fichier par:
la source
git checkout -- path/*
une seule fois, et cela m'a permis d'exécuter le pull après.Cela a fonctionné pour moi pour annuler les modifications sur le serveur distant en direct et tirer du contrôle de source GitHub:
la source
Voici ma stratégie pour résoudre le problème.
Énoncé du problème
Nous devons apporter des modifications à plus de 10 fichiers. Nous avons essayé
PULL (git pull origin master)
, mais Git a crié:Nous avons essayé d'exécuter
commit
et puispull
, mais ils n'ont pas fonctionné non plus.Solution
Nous étions dans le sale étape, parce que les fichiers se trouvaient dans la "zone de transit" alias "zone d'index" et certains étaient dans la "zone de tête" alias "répertoire Git local". Et nous voulions retirer les modifications du serveur.
Consultez ce lien pour obtenir des informations claires sur les différentes étapes de Git: GIT Stages
Nous avons suivi les étapes suivantes
git stash
(cela a rendu notre répertoire de travail propre. Vos modifications sont stockées sur la pile par Git).git pull origin master
(Tirez les modifications du serveur)git stash apply
(Appliqué toutes les modifications de la pile)git commit -m 'message'
(Validé les modifications)git push origin master
(Poussé les modifications sur le serveur)git stash drop
(Déposez la pile)Comprenons quand et pourquoi vous avez besoin de ranger
Si vous êtes dans un état sale , cela signifie que vous apportez des modifications dans vos fichiers et que vous êtes obligé, pour une raison quelconque, de tirer ou de basculer vers une autre branche pour un travail très urgent, donc à ce stade, vous ne pouvez pas tirer ou basculez jusqu'à ce que vous validiez votre changement. La
stash
commande est ici comme un coup de main.Extrait du livre ProGIT , 2e édition:
la source
Si vous souhaitez remplacer des modifications spécifiques, vous avez besoin d'un moyen de lui indiquer celles que vous souhaitez oublier.
Vous pouvez essayer de masquer de manière sélective les modifications que vous souhaitez abandonner
git stash --patch
, puis de les supprimergit stash drop
. Vous pouvez ensuite récupérer les modifications à distance et les fusionner normalement.la source
TL; DR;
Je ne sais pas pourquoi cela n'est pas encore répondu, mais la solution, comme vous pouvez le voir, est simple. Toutes les réponses ici suggèrent la même chose: pour supprimer / enregistrer vos modifications locales et appliquer en amont, puis (si vous
save
) appliquez vos modifications locales par-dessus.Que
git pull --rebase --autostash
fait étape par étape:Mon cas (probablement le vôtre aussi):
J'ai des changements locaux (changements dans le répertoire de travail):
Lorsque j'essaie de tirer des modifications à distance, j'obtiens une erreur:
Ces changements n'entrecoupent pas les changements locaux:
Donc, lorsque je
pull --rebase --autostash
change localement les modifications enregistrées et appliquées sans aucun problème automatiquementMaintenant, mes changements locaux sont légèrement inférieurs:
la source
J'avais un cas particulier: j'avais un fichier avec --assume-inchangé dessus. Il était difficile à localiser, car la
git status
commande ne montrait aucun changementla source
Si vous souhaitez conserver les modifications de production sur le serveur, fusionnez-les simplement dans un nouvel élément de configuration. La méthode de traitement est la suivante:
Peut-être que vous n'exécutez pas toutes les opérations. Vous pouvez savoir ce que vous pouvez faire ensuite.
la source
J'ignorais un fichier dans mon référentiel et quand je l'ai fait,
git pull upstream master
j'ai eu l'erreur suivante:Pour le résoudre, j'ai fait ce qui suit
Je l'ai ensuite fait
git status
et j'ai reçu ce messageEnsuite, j'ai
git checkout myfile.js
suivigit pull upstream master
. Cette fois, l'opération git pull a réussi.la source
J'ai rencontré cela en tirant du maître.
La façon dont je l'ai géré, en utilisant Visual Studio;
J'espère que cela t'aides!
la source
La solution la plus simple est:
la source
Je suis nouveau dans git et je ne sais pas si ma solution est une bonne idée.
J'ai testé TOUTES les réponses et aucune n'a fonctionné pour moi!
Mais j'ai trouvé une autre solution:
J'espère que cela t'aides.
la source
L'erreur «Vos modifications locales aux fichiers suivants seraient écrasées par la fusion» vient du fait que vous avez des modifications dans le référentiel local qui n'ont PAS encore été validées, donc avant de retirer du référentiel distant, validez simplement les modifications dans le référentiel local.
Disons que votre référentiel distant a une branche xyz et que vous souhaitez que cette branche distante xyz soit fusionnée (copiée dans) la branche locale repo xyz,
la source
Si cette erreur est due à des fins de ligne,
marchera. Je ne sais pas vraiment pourquoi cela fonctionne.
la source
Pour Pycharm, vous pouvez faire Git -> Revert puis tirer.
la source
Ce message peut également se produire si
git-lfs
est utilisé et qu'un pointeur de fichier a été remplacé par un fichier réel.alors vous utilisez:
sortie complète de mon cas
voir https://github.com/git-lfs/git-lfs/issues/2839
la source
J'ai essayé et avec succès, avant de tirer, laissez valider tous les fichiers que vous n'avez pas validés, alors vous ne recevrez pas ces messages d'AS.
la source