Comment ignorer le message d'erreur suivant sur Git Pull?
Vos modifications locales dans les fichiers suivants seraient écrasées par fusion
Que faire 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.
Très bien, avec l'aide des deux autres réponses, j'ai trouvé une solution directe:
git checkout HEAD^ file/to/overwrite
git pull
Si vous souhaitez supprimer toutes les modifications locales de votre copie de travail, stockez-les simplement:
git stash save --keep-index
Si vous n'en avez plus besoin, vous pouvez maintenant déposer cette réserve:
git stash drop
Si vous souhaitez écraser uniquement des parties spécifiques de vos modifications locales, il existe deux possibilités:
Commettez 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 écraser. Assurez-vous que ce fichier n'est pas transféré via git reset HEAD path/to/file/to/revert
.
Cela fonctionne pour moi pour remplacer tous les changements locaux et ne nécessite pas d'identité:
git reset --hard
git pull
Voici une solution qui élimine les changements mis en scène:
git reset file/to/overwrite
git checkout file/to/overwrite
Vous pouvez valider vos modifications avant de procéder à la fusion ou les stocker:
git stash save
git merge Origin/master
git stash pop
Si vous souhaitez supprimer vos modifications locales sur un fichier, vous pouvez procéder comme suit:
git checkout -- <file>
Ensuite, vous pouvez écraser le fichier [s] avec la dernière version en faisant simplement:
git pull
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
Dans le récent Git, vous pouvez ajouter -r
/--rebase
sur la commande pull
pour redéfinir votre branche actuelle au-dessus de la branche en amont après l'extraction. L'avertissement devrait disparaître, mais vous risquez d'avoir des conflits que vous devrez résoudre.
Sinon, vous pouvez commander différentes branches avec force, puis revenir à 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 stockant (git stash
) et des problèmes d'autorisations potentiels, en remplaçant des 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 au fichier/s et que le même fichier/s existe avec les modifications dans le référentiel Git. Par conséquent, avant d'extraire/de pousser, vous aurez besoin de modifications locales cachées:
Pour écraser les modifications locales d'un seul fichier:
git reset file/to/overwrite
git checkout file/to/overwrite
Pour écraser 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 branche qui n'est pas fusionnée avec la branche principale.
Parfois, aucun de ceux-ci ne fonctionne. Ennuyeux, à cause de la chose LF que je pense, ce qui fonctionnera sera supprimer les fichiers, puis tirer. 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 même pas forcément des modifications) seront annulées et vous permettront de continuer.
À utiliser à vos risques et périls.
Vous pouvez utiliser ceci pour écraser le fichier
git checkout file_to_overwrite
git stash save --keep-index
n'a pas fonctionné pour moi.
sous la commande a fonctionné comme prévu.
git reset --hard
git pull
Il annule tous les changements locaux si vous n'en avez pas besoin.
Cela a fonctionné pour moi pour ignorer les modifications sur le serveur distant en direct et extraire du contrôle de code source GitHub:
git reset --hard
git pull Origin master
Le meilleur moyen de résoudre ce problème est:
git checkout -- <path/file_name>
Après cela, vous pouvez écraser le fichier en:
git pull Origin master
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 stocker de manière sélective les modifications que vous souhaitez abandonner à l'aide de git stash --patch
, puis de supprimer ce stockage avec git stash drop
. Vous pouvez ensuite extraire les modifications à distance et les fusionner normalement.
git reset --hard && git clean -df
Cela réinitialisera et supprimera tous les fichiers non suivis.
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:
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.
Voici ma stratégie pour résoudre le problème.
Déclaration du problème
Nous devons apporter des modifications dans plus de 10 fichiers. Nous avons essayé PULL (git pull Origin master)
, mais Git a crié:
error: Vos modifications locales dans les fichiers suivants seraient écrasées par fusion: S'il vous plaît, validez vos modifications ou stockez-les avant de pouvoir fusionner.
Nous avons essayé d'exécuter commit
et ensuite pull
, mais cela n'a pas fonctionné non plus.
Solution
Nous étions en fait au stade sale, car les fichiers se trouvaient dans la "Zone de stockage intermédiaire" a.k.a "Zone d'indexage" et certains se trouvaient dans la "Zone de tête" a.k.a "répertoire Git local". Et nous voulions extraire les modifications du serveur.
Vérifiez ce lien pour des informations claires sur les différentes étapes de Git: GIT Stages
Nous avons suivi les étapes suivantes
git stash
(notre répertoire de travail a été nettoyé. Vos modifications sont stockées dans la pile par Git).git pull Origin master
(extraire 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
(Transmis les modifications au serveur)git stash drop
(Déposer la pile)Comprenons quand et pourquoi vous avez besoin de cacher
Si vous êtes dans l'état sale, cela signifie que vous apportez des modifications à vos fichiers, puis vous êtes obligé, pour quelque raison que ce soit, à tirer ou basculer à une autre branche pour un travail très urgent, vous ne pouvez donc pas tirer ou changer de main-d’œuvre tant que vous n’avez pas validé votre changement. La commande stash
est ici comme un coup de main.
Extrait du livre ProGIT, 2e édition:
Souvent, lorsque vous travaillez sur une partie de votre projet, il y a de la place. un état désordonné et que vous voulez changer de branche pour travailler un peu autre chose. Le problème est que vous ne voulez pas faire un commit de travail à moitié fait pour que vous puissiez revenir sur ce point plus tard. Le La réponse à ce problème est la commande git stash. Stashing prend le État sale de votre répertoire de travail - c’est-à-dire que votre suivi suivi est modifié les fichiers et les modifications planifiées - et l’enregistre sur une pile de données non finies changements que vous pouvez réappliquer à tout moment.
J'avais un cas particulier de ceci: j'avais un fichier avec --assume-inchanged dessus Il était difficile à localiser car la commande git status
n’affichait aucun changement.
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!
J'ignorais un fichier dans mon dépôt et quand j'ai fait git pull upstream master
j'ai eu l'erreur suivante:
erreur: vos modifications locales dans les fichiers suivants seraient écrasées par la fusion: monfichier.js S'il vous plaît, validez vos modifications ou stockez-les avant de pouvoir les fusionner . Avorter
Pour le résoudre j'ai fait ce qui suit
git update-index --no-assume-unchanged myfile.js
J'ai ensuite fait git status
et j'ai reçu ce message
Sur branche master Votre branche est derrière 'Origin/master' de 4 commits, et peut être expédié rapidement. (utilisez "git pull" pour mettre à jour votre branche locale )
Modifications non planifiées pour la validation: (utilisez "git add ..." pour mettre à jour Ce qui sera validé) (utilisez "git checkout - ..." pour ignorer Les modifications du répertoire de travail)
modifié: myfile.js
aucune modification n'a été ajoutée à commit (utilisez "git add" et/ou "git commit -a")
Ensuite, j'ai fait git checkout myfile.js
suivi de git pull upstream master
. Cette fois, l'opération Git Pull a été réussie.
J'ai le même message d'erreur exécuté le
: PluginUpdatecommande à partir de la ligne de commande de vim editors
"Merci de valider vos modifications ou de les stocker avant de les fusionner"
1. vient de retirer physiquement le dossier contenant les plugins du
rm -rf ~/.vim/bundle/plugin-folder/
2. et l'a réinstallé à partir de la ligne de commande vim,
: PluginInstall!
car mon ~/.vimrc contenait les instructions pour construire le plugin vers cette destination:
cela a créé le dossier approprié,
et le nouveau paquet est dans ce dossier ~ ./. vim/bundle /dossier-plugins réinstallé
Les signes "! " (en raison de l'échec de la commande PluginUpdate commande) ont été modifiés
aux signes " + ", et ensuite, la commandePluginUpdateest exécutée.
Pour Pycharm, vous pouvez faire Git -> Revert puis tirer.
J'ai essayé et avec succès, avant de tirer, laissez valider tous les fichiers que vous n'avez pas engagés, alors vous ne recevrez pas ces messages d'AS.
Ce message peut également se produire si git-lfs
est utilisé et qu'un pointeur de fichier a été écrasé par un fichier réel.
alors vous utilisez:
git stash
git lfs migrate import
git pull
sortie complète 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(-)
La solution la plus simple est:
git reset --hard && git pull
Si cette erreur est due aux fins de ligne,
git add
git checkout mybranch
marchera. Je ne sais pas vraiment pourquoi ça marche.