1113 Stimmen

Wie löse ich die Git-Meldung "Commit your changes or stash them before you can merge"?

Ich habe einige Aktualisierungen auf meinem lokalen Rechner vorgenommen, sie in ein entferntes Repository übertragen und jetzt versuche ich, die Änderungen auf den Server zu übertragen, und erhalte die Meldung;

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.

Also bin ich gerannt,

git checkout -- wp-content/w3tc-config/master.php

Ich habe es erneut versucht und erhalte die gleiche Meldung. Ich nehme an, dass w3tc etwas in der Konfigurationsdatei des Servers geändert. Es ist mir egal, ob die lokale Kopie oder die entfernte Kopie auf den Server kommt (ich nehme an, dass die entfernte Kopie am besten ist), ich möchte nur in der Lage sein, den Rest meiner Änderungen (Plugin-Updates) zusammenzuführen.

Irgendwelche Ideen?

1879voto

stdcall Punkte 25702

Sie können nicht mit lokalen Änderungen zusammengeführt werden. Git schützt Sie vor dem Verlust potenziell wichtiger Änderungen.

Sie haben drei Möglichkeiten:

  • Bestätigen Sie die Änderung mit

    git commit -m "My message"
  • Verstecken Sie es.

    Das Stapeln funktioniert wie ein Stapel, auf den man Änderungen schieben kann, die dann in umgekehrter Reihenfolge wieder verschwinden.

    Zum Verstecken geben Sie

    git stash

    Führen Sie die Zusammenführung durch und ziehen Sie dann den Vorrat ab:

    git stash pop
  • Verwerfen Sie die lokalen Änderungen

    mit git reset --hard
    oder git checkout -t -f remote/branch

    Oder: Verwerfen lokaler Änderungen für eine bestimmte Datei

    mit git checkout filename

131voto

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

Der erste Befehl speichert Ihre Änderungen vorübergehend in das Versteck und löscht sie aus dem Arbeitsverzeichnis.

Der zweite Befehl schaltet die Verzweigungen um.

Der dritte Befehl stellt die Änderungen wieder her, die Sie im Stash gespeichert haben (die --index ist nützlich, um sicherzustellen, dass die bereitgestellten Dateien immer noch bereitgestellt werden).

58voto

kenorb Punkte 134883

Sie können eine der folgenden Methoden ausprobieren:

neu gründen

Bei einfachen Änderungen können Sie versuchen, die Änderungen zu rebasieren, während Sie die Änderungen ziehen, z. B.

git pull origin master -r

So wird Ihr aktueller Zweig nach dem Holen auf den Upstream-Zweig angewendet.

Dies ist gleichbedeutend mit: checkout master , fetch y rebase origin/master git-Befehle.

Dies ist eine potenziell gefährliche Arbeitsweise. Sie überschreibt den Verlauf, was nicht gut ist, wenn Sie den Verlauf bereits veröffentlicht haben. Verwenden Sie diese Option nicht, wenn Sie nicht gelesen haben git-rebase(1) sorgfältig.


Zur Kasse

Wenn Sie sich nicht um Ihre lokalen Änderungen kümmern, können Sie vorübergehend zu einem anderen Zweig wechseln (mit Gewalt) und ihn wieder zurückschalten, z. B.

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

zurücksetzen

Wenn Sie sich nicht um Ihre lokalen Änderungen kümmern, versuchen Sie, sie auf HEAD (Originalzustand) zurückzusetzen, z. B.

git reset HEAD --hard

Wenn das nicht hilft, kann es sich um Regeln in Ihrer Git-Normalisierungsdatei ( .gitattributes ), so dass es besser ist, sich an das zu halten, was dort steht. Oder Ihr Dateisystem unterstützt keine Berechtigungen, dann müssen Sie die filemode in Ihrer Git-Konfiguration.

Verwandt: Wie zwinge ich "git pull" dazu, lokale Dateien zu überschreiben?

37voto

Gata Punkte 155

Verwenden:

git reset --hard

dann:

git pull origin master

27voto

Mr Nobody Punkte 377

Versuchen Sie dies

git stash save ""

und versuchen Sie erneut zu ziehen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X