Git Ersetzen Sie die lokale Version durch die Remote-Version
148
Wie kann ich git anweisen, meine lokale Datei zu ignorieren und die aus meinem Remote-Zweig zu übernehmen, ohne zu versuchen, sie zusammenzuführen und Konflikte zu verursachen?
Es wäre hilfreich, wenn Sie weitere Details angeben könnten. Möchten Sie den Inhalt aller Dateien aus dem Remote-Zweig oder nur einige der Dateien übernehmen (dh einige lokale Versionen / Änderungen beibehalten)? Haben Sie eine lokale Geschichte, die Sie behalten möchten? (Dies kann wichtig sein, wenn andere Zweige oder Repositorys Ihren lokalen Verlauf bereits enthalten haben.) Wenn Sie Ihren lokalen Verlauf beibehalten möchten, was planen Sie später damit zu tun? (Sie können ein Tag hinterlassen, das auf den lokalen Verlauf verweist, und Ihren Zweig einfach auf das zurücksetzen, was die Fernbedienung hat, oder Sie möchten ihren Zweig zusammenführen.)
Es könnte darauf hingewiesen werden, dass dieser Kopf lösen wird - der Fragesteller mit vielleicht lieber auf dem Zweig bleibengit stash; git fetch origin; git reset --hard origin/master
Mark Longair
10
Ich denke, Mark Longairs Kommentar ist die eigentliche Antwort auf diese Frage
Es war die nützlichste Antwort für mich +1
Andres
Wie komme ich vor dem zurück in den Staat git stash? git stash listist leer.
Leo
Ich möchte dich umarmen
Ugur Kazdal
45
Ich verstehe die Frage folgendermaßen: Sie möchten den Inhalt einer Datei (oder einer Auswahl) von Upstream vollständig ersetzen. Sie möchten den Index nicht direkt beeinflussen (Sie würden also wie gewohnt add + commit ausführen).
Nach meinem Verständnis haben Sie beispielsweise eine Datei, die Sie nur zu Testzwecken aktualisiert haben, fälschlicherweise gespeichert. Wenn Sie dann "git status" ausführen, wird die Datei als "Geändert" angezeigt und Sie sagen einige schlechte Wörter. Sie möchten nur die alte Version zurück und arbeiten normal weiter.
In diesem Szenario können Sie einfach den folgenden Befehl ausführen:
Für mich arbeitete so "git checkout remotes / origin / master <my-file>"
saravanakumar
4
Verwenden Sie die Option -soder in --strategyKombination mit der -XOption. In Ihrer speziellen Frage möchten Sie alle Remote-Dateien behalten und die gleichnamigen lokalen Dateien ersetzen.
Ersetzen Sie Konflikte mit der Remote-Version
git merge -s recursive -Xtheirs upstream/master
verwendet die Remote-Repo-Version aller in Konflikt stehenden Dateien.
Ersetzen Sie Konflikte mit der lokalen Version
git merge -s recursive -Xours upstream/master
verwendet die lokale Repo-Version aller in Konflikt stehenden Dateien.
git merge -s their
.Antworten:
Dies ist die sicherste Lösung:
Jetzt können Sie tun, was Sie wollen, ohne Angst vor Konflikten zu haben.
Zum Beispiel:
Wenn Sie die Remote-Änderungen in den Hauptzweig aufnehmen möchten, haben Sie folgende Möglichkeiten:
Dadurch verzweigen Sie "master" und zeigen auf "origin / master".
quelle
git stash; git fetch origin; git reset --hard origin/master
git stash
?git stash list
ist leer.Ich verstehe die Frage folgendermaßen: Sie möchten den Inhalt einer Datei (oder einer Auswahl) von Upstream vollständig ersetzen. Sie möchten den Index nicht direkt beeinflussen (Sie würden also wie gewohnt add + commit ausführen).
Einfach machen
Wenn Sie dies für umfangreiche Teilbäume tun möchten und stattdessen den Index direkt beeinflussen möchten, verwenden Sie
Sie können dann (optional) Ihre Arbeitskopie aktualisieren, indem Sie dies tun
quelle
Nach meinem Verständnis haben Sie beispielsweise eine Datei, die Sie nur zu Testzwecken aktualisiert haben, fälschlicherweise gespeichert. Wenn Sie dann "git status" ausführen, wird die Datei als "Geändert" angezeigt und Sie sagen einige schlechte Wörter. Sie möchten nur die alte Version zurück und arbeiten normal weiter.
In diesem Szenario können Sie einfach den folgenden Befehl ausführen:
quelle
Ich würde die entfernte Datei aus dem "Master" (dem entfernten / Ursprungs-Repository) wie folgt auschecken:
Beispiel: git checkout master components / indexTest.html
quelle
Verwenden Sie die Option
-s
oder in--strategy
Kombination mit der-X
Option. In Ihrer speziellen Frage möchten Sie alle Remote-Dateien behalten und die gleichnamigen lokalen Dateien ersetzen.Ersetzen Sie Konflikte mit der Remote-Version
verwendet die Remote-Repo-Version aller in Konflikt stehenden Dateien.
Ersetzen Sie Konflikte mit der lokalen Version
verwendet die lokale Repo-Version aller in Konflikt stehenden Dateien.
quelle