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?
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?
Antworten:
Dies ist die sicherste Lösung:
git stash
Jetzt können Sie tun, was Sie wollen, ohne Angst vor Konflikten zu haben.
Zum Beispiel:
git checkout origin/master
Wenn Sie die Remote-Änderungen in den Hauptzweig aufnehmen möchten, haben Sie folgende Möglichkeiten:
git reset --hard origin/master
Dadurch verzweigen Sie "master" und zeigen auf "origin / master".
git stash; git fetch origin; git reset --hard origin/master
git stash? git stash listist 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
git checkout remote/branch -- a/file b/another/file
Wenn Sie dies für umfangreiche Teilbäume tun möchten und stattdessen den Index direkt beeinflussen möchten, verwenden Sie
git read-tree remote/branch:subdir/
Sie können dann (optional) Ihre Arbeitskopie aktualisieren, indem Sie dies tun
git checkout-index -u --force
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:
git checkout -- path/filename
Ich würde die entfernte Datei aus dem "Master" (dem entfernten / Ursprungs-Repository) wie folgt auschecken:
git checkout master <FileWithPath>
Beispiel: git checkout master components / indexTest.html
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.