Question Comment puis-je résoudre git en disant "Valider vos modifications ou les stocker avant de pouvoir fusionner"?


J'ai fait quelques mises à jour sur ma machine locale, je les ai poussé vers un dépôt distant, et maintenant j'essaye d'apporter les changements au serveur et je reçois le message;

error: Your local changes to the following files would be overwritten by merge:
wp-content/w3tc-config/master.php
Please, commit your changes or stash them before you can merge.

Alors j'ai couru git checkout -- wp-content/w3tc-config/master.php et j'ai encore essayé et j'ai reçu le même message. Je suppose que w3tc a changé quelque chose dans le fichier de configuration sur le serveur. Je me fiche de savoir si la copie locale ou la copie à distance va sur le serveur (je suppose que la télécommande est la meilleure), je veux juste pouvoir fusionner le reste de mes modifications (mises à jour de plugin).

Des idées?


508
2018-04-01 14:11


origine


Réponses:


Vous ne pouvez pas fusionner avec des modifications locales. Git vous protège contre la perte de changements potentiellement importants.

Vous avez trois options:

  • Commettre le changement en utilisant

    git commit -m "My message"
    
  • Stash it

    Stashing agit comme une pile, où vous pouvez pousser les changements, et vous les faites apparaître dans l'ordre inverse.

    Pour stocker, tapez

    git stash
    

    Faites la fusion, puis tirez le cache:

    git stash pop
    
  • Ignorer les modifications locales

    en utilisant git reset --hard
    ou git checkout -t -f remote/branch

    Ou: Supprimer les modifications locales pour un fichier spécifique

    en utilisant git checkout filename


904
2018-04-01 14:34



git stash
git pull <remote name> <remote branch name> (or) switch branch
git stash apply --index

La première commande stocke vos modifications temporairement dans la cachette et les supprime du répertoire de travail.

La deuxième commande change de branche.

La troisième commande restaure les modifications que vous avez stockées dans la mémoire (la --index option est utile pour s'assurer que les fichiers mis en scène sont toujours en cours).


51
2018-06-04 06:58



Vous pouvez essayer l'une des méthodes suivantes:

rebaser

Pour les changements simples, essayez de rebaser par-dessus tout en tirant les changements, par ex.

git pull origin master -r

Donc, il va appliquer votre branche actuelle sur le dessus de la branche en amont après la récupération.

Ceci est équivalent à: checkout master, fetch et rebase origin/master commandes git.

Ceci est un mode de fonctionnement potentiellement dangereux. Il réécrit l'histoire, ce qui n'est pas de bon augure quand vous avez déjà publié cette histoire. N'utilisez pas cette option à moins d'avoir lu git-rebase(1) soigneusement.


check-out

Si vous ne vous souciez pas de vos modifications locales, vous pouvez passer à une autre branche temporaire (avec force) et la rétablir, par ex.

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

réinitialiser

Si vous ne vous souciez pas de vos modifications locales, essayez de le réinitialiser à HEAD (état d'origine), par ex.

git reset HEAD --hard

Si ci-dessus ne va pas aider, il peut y avoir des règles dans votre fichier de normalisation git (.gitattributes) donc il vaut mieux commettre ce qu'il dit. Ou votre système de fichiers ne supporte pas les permissions, vous devez donc désactiver filemode dans ta config git.

En relation: Comment forcer "git pull" à écraser les fichiers locaux?


17
2017-07-24 11:55



Donc, la situation que j'ai rencontrée était la suivante:

erreur: vos modifications locales aux fichiers suivants seront remplacées par fusion:   wp-content / w3tc-config / master.php   Veuillez valider vos modifications ou les stocker avant de pouvoir fusionner.

sauf, juste avant cela, était à distance: donc en fait ceci:

remote: error: Vos changements locaux aux fichiers suivants seraient écrasés par fusion:   some / file.ext   Veuillez valider vos modifications ou les stocker avant de pouvoir fusionner.

Ce qui se passait était (je pense, pas 100% positif) le crochet de réception de git post commençait à courir et à gâcher en raison des changements de mouvement dans le dépôt de serveur à distance, qui en théorie, n'aurait pas dû être touché.

Donc, ce que j'ai fini par faire en traçant le crochet post-réception et en trouvant cela, était d'aller au dépôt distant sur le serveur, et il y avait le changement (qui n'était pas sur mon dépôt local, qui, en fait, dit que cela correspondait, pas de changements, rien à commettre, à jour, etc.) Alors que sur le local, il n'y avait pas de changements, sur le serveur, j'ai ensuite fait un git checkout -- some/file.ext et puis les dépôts locaux et distants ont effectivement correspondu et je pourrais continuer à travailler et à déployer. Je ne suis pas tout à fait sûr de la façon dont cette situation s'est produite, même si une vingtaine de développeurs et des changements informatiques ont peut-être quelque chose à voir avec cela.


10
2017-11-17 22:02



Essaye ça

git stash save ""

et essayez de tirer à nouveau


5
2018-01-25 08:20



Dans mon cas, j'ai sauvegardé puis supprimé le fichier sur lequel Git se plaignait, engagé, puis j'ai pu enfin vérifier une autre branche.

J'ai ensuite remplacé le fichier, recopié le contenu et continué comme si rien ne s'était passé.


0
2018-03-26 06:29



Demander un commit avant de tirer

  • git cachette
  • git pull origine << nom de l'abonné >>

Si besoin :

  • git caché appliquer

0
2017-08-01 04:26