Comment puis-je ignorer une erreur sur ‘git pull’ concernant mes modifications locales qui seraient remplacées par une fusion?

Comment est-ce que j’ignore le message d’erreur suivant sur Git pull?

Vos modifications locales apscopes aux 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.

Si vous souhaitez supprimer toutes les modifications locales de votre copie de travail, rangez-les simplement:

 git stash save --keep-index 

Si vous n’en avez plus besoin, vous pouvez maintenant laisser tomber cette cachette:

 git stash drop 

Si vous ne souhaitez écraser que des parties spécifiques de vos modifications locales, il existe deux possibilités:

  1. Validez tout ce que vous ne voulez pas écraser et utilisez la méthode ci-dessus pour le rest.
  2. Utilisez git checkout path/to/file/to/revert pour les modifications que vous souhaitez écraser. Assurez-vous que le fichier n’est pas mis en scène via git reset HEAD path/to/file/to/revert .

Avec l’aide des deux autres réponses, j’ai trouvé une solution directe:

 git checkout HEAD^ file/to/overwrite git pull 

Cela fonctionne pour moi pour remplacer tous les changements locaux et ne nécessite pas une identité:

 git reset --hard git pull 

Voici une solution qui élimine les changements par étapes:

 git reset file/to/overwrite git checkout file/to/overwrite 

Vous pouvez soit valider vos modifications avant de faire la fusion, soit les cacher:

  1. git stash save
  2. git merge origin/master
  3. git stash pop

Ma solution pour résoudre ce problème était:

 git checkout --  

Ensuite, je pourrais écraser le fichier en utilisant simplement:

 git pull 

Si votre référentiel contient quelques fichiers supprimés de master :

  1. git checkout master
  2. git fetch origin
  3. git reset --hard origin/master
  4. git checkout -b newbranch

Dans le récent Git, vous pouvez append -r / --rebase à la commande pull pour rebaser votre twig actuelle en haut de la twig en amont après la récupération. L’avertissement devrait disparaître, mais vous risquez de rencontrer des conflits que vous devrez résoudre.


Alternativement, vous pouvez extraire différentes twigs avec force, puis revenir à nouveau au master , par exemple:

 git checkout origin/master -f git checkout master -f 

Puis tirez à nouveau comme d’habitude:

 git pull origin master 

L’utilisation de cette méthode peut vous faire gagner du temps en évitant les problèmes de stockage ( git stash ) et de permission, en réinitialisant les fichiers ( git reset HEAD --hard ), en supprimant des fichiers ( git clean -fd ), etc.

Ce problème est dû au fait que vous avez apporté des modifications localement à un fichier / s et que le même fichier / s existe avec les modifications apscopes au référentiel Git.

Pour remplacer les modifications locales d’un seul fichier:

 git reset file/to/overwrite git checkout file/to/overwrite 

Pour remplacer toutes les modifications locales (modifications dans tous les fichiers):

 git stash git pull git stash pop 

Ce problème peut également être dû au fait que vous êtes sur une twig qui n’est pas fusionnée avec la twig principale.

Parfois, rien ne fonctionne. Malheureusement, à cause de la chose LF, je pense que ce qui va marcher est de supprimer les fichiers, puis de tirer. Non pas que je recommande cette solution, mais si le fichier n’existe pas, git ne vous informera pas inutilement que vos modifications (qui peuvent même ne pas être modifiées) seront remplacées et vous permettront de continuer.

À utiliser à vos risques et périls.

Vous pouvez l’utiliser pour écraser le fichier

 git checkout file_to_overwrite 

Si vous souhaitez écraser des modifications spécifiques, vous avez besoin d’un moyen de lui indiquer celles que vous souhaitez oublier.

Vous pouvez essayer de dissimuler de manière sélective les modifications que vous souhaitez abandonner en utilisant git stash --patch puis en git stash --patch cette réserve avec la méthode git stash --patch git stash drop . Vous pouvez ensuite extraire les modifications à distance et les fusionner normalement.

La meilleure façon de résoudre ce problème est la suivante:

 git checkout --  

Après cela, vous pouvez remplacer le fichier par:

 git pull origin master 

J’en ai eu un cas particulier: j’avais un fichier avec –assume-unchanged. C’était difficile à localiser, car la commande git status ne montrait aucun changement

Cela a fonctionné pour moi pour ignorer les modifications sur le serveur distant en direct et tirer du contrôle de source GitHub:

 git reset --hard git pull origin master 

Si vous souhaitez conserver les modifications de production sur le serveur, fusionnez-les dans un nouvel élément de configuration. La méthode de traitement est la suivante:

 git stash git pull git stash pop 

Peut-être que vous n’exécutez pas toutes les opérations. Vous pouvez savoir ce que vous pouvez faire ensuite.

J’ignorais un fichier dans mon repo et quand j’ai fait git pull upstream master j’ai eu l’erreur suivante:

Erreur: vos modifications locales apscopes aux fichiers suivants seraient écrasées par la fusion: myfile.js Veuillez valider vos modifications ou les cacher avant de pouvoir les fusionner. Abandonner

Pour le résoudre j’ai fait ce qui suit

 git update-index --no-assume-unchanged myfile.js 

J’ai ensuite eu le git status et j’ai reçu ce message

Sur le maître de la twig Votre twig est derrière «origine / maître» par 4 commits et peut être transférée rapidement. (utilisez “git pull” pour mettre à jour votre twig locale)

Modifications non mises en scène pour commit: (utilisez “git add …” pour mettre à jour ce qui sera validé) (utilisez “git checkout – …” pour ignorer les modifications dans le répertoire de travail)

modifié: myfile.js

aucun changement ajouté à la validation (utilisez “git add” et / ou “git commit -a”)

Ensuite, j’ai git checkout myfile.js suivi de git pull upstream master . Cette fois, l’opération Git Pull a réussi.

Voici ma stratégie pour résoudre le problème.

Énoncé de problème

Nous devons apporter des modifications à plus de 10 fichiers. Nous avons essayé PULL (git pull origin master) , mais Git a crié:

erreur: vos modifications locales apscopes aux fichiers suivants seraient écrasées par la fusion: Veuillez valider vos modifications ou les cacher avant de pouvoir les fusionner.

Nous avons essayé d’exécuter commit puis de pull , mais ils n’ont pas fonctionné non plus.

Solution

Nous étions en fait dans une sale scène, car les fichiers se trouvaient dans la “Zone de stockage”, également appelée “Zone d’index”, et certains se trouvaient dans le “Head Area”, aussi appelé “Répertoire local Git”. Et nous voulions extraire les modifications du serveur.

Consultez ce lien pour plus d’informations sur les différentes étapes de Git: Stades GIT

Nous avons suivi les étapes suivantes

  • git stash (cela a rendu notre répertoire de travail propre. Vos modifications sont stockées sur la stack par Git).
  • git pull origin master (Extraire les modifications du serveur)
  • git stash apply ( git stash apply tous les changements de la stack)
  • git commit -m 'message' (Validé les modifications)
  • git push origin master (Poussé les modifications sur le serveur)
  • git stash drop (Lâche la stack)

Comprenons quand et pourquoi vous devez vous cacher

Si vous êtes dans un état délabré , cela signifie que vous apportez des modifications à vos fichiers et que, pour quelque raison que ce soit, vous êtes obligé de passer à une autre twig pour un travail très urgent. basculez jusqu’à ce que vous commettiez votre changement. La commande stash est là pour vous aider.

Du livre ProGIT , 2ème édition:

Souvent, lorsque vous travaillez sur une partie de votre projet, les choses sont en désordre et vous voulez changer de twig pour travailler sur autre chose. Le problème est que vous ne voulez pas commettre un travail à moitié terminé pour que vous puissiez y revenir plus tard. La réponse à ce problème est la commande git stash. Stashing prend l’état sale de votre répertoire de travail, c’est-à-dire vos fichiers de suivi modifiés et vos modifications par étapes, et les enregistre sur une stack de modifications inachevées que vous pouvez réappliquer à tout moment.

J’ai rencontré ceci en tirant du maître.

La façon dont je l’ai géré, en utilisant Visual Studio;

  1. Tout d’abord, j’ai effectué Annuler validation sur ma solution.
  2. Ensuite, j’ai fait le processus de tirage Git.

J’espère que cela t’aides!

git stash save --keep-index n’a pas fonctionné pour moi.

la commande ci-dessous a fonctionné comme prévu.

 git reset --hard git pull 

Il remplace tous les changements locaux si vous n’en avez pas besoin.

git reset --hard && git clean -df

Cela réinitialisera et supprimera tous les fichiers non suivis.

Si cette erreur est due à des fins de ligne,

 git add git checkout mybranch 

marchera. Je ne sais pas trop pourquoi cela fonctionne.

Pour Pycharm, vous pouvez faire Git -> Revert et ensuite tirer.

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:

 git stash git lfs migrate import git pull 

pleine sortie de mon cas

 λ git stash Saved working directory and index state WIP on master: 5d4ad47 Merge branch 'feature/...' into 'master' Encountered 1 file(s) that should have been pointers, but weren't: public/apple-touch-icon.png λ git pull Updating 5a4ad44..b25f79d error: Your local changes to the following files would be overwritten by merge: public/apple-touch-icon.png Please commit your changes or stash them before you merge. Aborting λ git lfs migrate import migrate: Fetching remote refs: ..., done migrate: Sorting commits: ..., done migrate: Rewriting commits: 100% (0/0), done migrate: Updating refs: ..., done migrate: checkout: ..., done λ git pull Updating 5d4ad47..a25c79a Fast-forward public/apple-touch-icon.png | Bin 2092 -> 130 bytes public/favicon.ico | Bin 6518 -> 1150 bytes 2 files changed, 0 insertions(+), 0 deletions(-) 

voir https://github.com/git-lfs/git-lfs/issues/2839

J’ai essayé et réussi, avant de tirer, laissez commettre tous les fichiers que vous n’avez pas commis, vous ne recevrez pas ces messages d’AS.