So beheben Sie den Git-Fehler ‘Ihre lokalen Änderungen an den folgenden Dateien werden durch Zusammenführen überschrieben’
Diese Fehlermeldung wird vermieden, wenn keine nicht festgeschriebenen Dateien vorhanden sind, die auch Änderungen im Remote-Repository aufweisen. Wenn Sie diese Nachricht erhalten, konsultieren Sie am besten Ihre anderen Teammitglieder und fragen Sie sie nach ihrer Meinung. Unabhängig davon, ob Sie Ihre lokalen Änderungen zusammenführen oder die Version im Repository beibehalten möchten, ist es am besten, alle an Bord zu lassen.
Was sind Repositories? Was ist Push and Pull in Git?
Ein Repository ist eine Art Speicher für Code, der ständig geändert und von Teammitgliedern über den GitHub-Versionskontrollmechanismus abgerufen wird. EIN ‘Ziehen’ bedeutet, dass Sie die neueste Version des Repositorys auf Ihren lokalen Speicher / Ihre IDE (Integrated Development Environment) wie Pycharm usw. ziehen.
Nach einem Pull nehmen Sie Änderungen am Code vor oder fügen weitere Funktionen hinzu. Sobald Sie fertig sind, Sie ‘Drücken’ Der Code wird im Repository gespeichert, sodass Änderungen gespeichert und Ergänzungen vorgenommen werden. Der Code wird auch für andere Personen zugänglich.
Wenn Sie mit der Github-Versionskontrolle noch nicht vertraut sind, wird empfohlen, zuerst alle Grundlagen durchzugehen. In diesem Artikel gehen wir davon aus, dass Sie bereits über Grundkenntnisse verfügen und alle Vor- und Nachteile kennen.
Wie behebe ich “Ihre lokalen Änderungen an den folgenden Dateien werden durch Zusammenführen überschrieben”?
Die Auflösung dieser Fehlermeldung hängt davon ab, was Sie tun möchten. Sie können Ihre lokalen Änderungen verwerfen und diejenigen im Repository abrufen oder Ihre lokalen Änderungen in einem Stash speichern und die Version aus dem Repository abrufen. Es hängt alles von Ihren Vorlieben ab.
Wir empfehlen daher, dass Sie sich mit Ihren Teammitgliedern beraten und sicherstellen, dass Sie alle auf dem Laufenden sind selbe Seite bevor Sie vorwärts gehen. Wenn Sie ein falsches Commit durchführen oder die falsche Version verwenden, kann dies Auswirkungen auf das gesamte Team haben.
Methode 1: Erzwingen eines Pulls, um lokale Änderungen zu überschreiben
Wenn du Die lokal vorgenommenen Änderungen sind mir egal Wenn Sie den Code aus dem Repository abrufen möchten, können Sie einen Pull erzwingen. Dadurch werden alle auf Ihrem Computer vorgenommenen lokalen Änderungen überschrieben. Eine Kopie der Version im Repository wird angezeigt.
Führen Sie die folgenden Befehle in Ihrer IDE aus:
git reset -- hard git pull
Dadurch werden alle Ihre lokalen Änderungen sofort zerstört. Stellen Sie daher sicher, dass Sie wissen, was Sie tun, und dass Sie Ihre lokalen Änderungen nicht benötigen.
Methode 2: Beibehaltung beider Änderungen (lokal und vom Repo)
Wenn Sie beide Änderungen (lokal vorgenommene Änderungen und im Repository vorhandene Änderungen) beibehalten möchten, können Sie Ihre Änderungen hinzufügen und festschreiben. Wenn Sie ziehen, wird es offensichtlich einen Zusammenführungskonflikt geben. Hier können Sie die Tools in Ihrer IDE (wie Difftool und Mergetool) verwenden, um die beiden Codeteile zu vergleichen und zu bestimmen, welche Änderungen beibehalten und welche entfernt werden sollen. Dies ist der mittlere Weg; Änderungen gehen erst verloren, wenn Sie sie manuell entfernen.
git add $the_file_under_error git commit git pull
Wenn Sie einen Zusammenführungskonflikt erhalten, fügen Sie diese Tools zur Konfliktlösung hinzu und überprüfen Sie sie zeilenweise.
Methode 3: Beibehaltung beider Änderungen, ABER keine Festschreibung
Diese Situation tritt von Zeit zu Zeit auf, wenn Entwickler nicht bereit sind, ein Commit durchzuführen, da Sie teilweise fehlerhaften Code debuggen. Hier können wir die Änderungen sicher aufbewahren, die Version aus dem Repository abrufen und dann Ihren Code freigeben.
git stash save --keep-index
oder
git stash
git pull git stash pop
Wenn es nach dem Öffnen des Stashs zu Konflikten kommt, sollten Sie diese auf die übliche Weise lösen. Sie können auch den folgenden Befehl verwenden:
git stash apply
anstelle von Pop, wenn Sie nicht bereit sind, den versteckten Code aufgrund von Konflikten zu verlieren.
Wenn das Zusammenführen für Sie keine praktikable Option ist, sollten Sie eine Neubasis in Betracht ziehen. Beim erneuten Basieren wird eine Folge von Commits in ein neues Basis-Commit verschoben oder kombiniert. Ändern Sie im Falle einer erneuten Basierung den Code in:
git stash git pull --rebase origin master git stash pop
Methode 4: Nehmen Sie Änderungen an “bestimmten” Teilen Ihres Codes vor
Wenn Sie Änderungen an bestimmten Teilen des Codes vornehmen und nicht alles ersetzen möchten, können Sie dies tun verpflichten Alles, was Sie nicht überschreiben möchten, und folgen Sie dann Methode 3. Sie können den folgenden Befehl für die Änderungen verwenden, die Sie aus der im Repository vorhandenen Version überschreiben möchten:
git checkout path/to/file/to/revert
oder
git checkout HEAD^ path/to/file/to/revert
Außerdem müssen Sie sicherstellen, dass die Datei nicht über Folgendes bereitgestellt wird:
git reset HEAD path/to/file/to/revert
Fahren Sie dann mit dem Befehl pull fort:
git pull
Dadurch wird versucht, die Version aus dem Repository abzurufen.