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:
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:
git stash save
git merge origin/master
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
:
git checkout master
git fetch origin
git reset --hard origin/master
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;
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(-)
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.