Wie erzwinge ich das Überschreiben von lokalen Dateien auf einer git pull
?
Das Szenario sieht folgendermaßen aus:
- Ein Teammitglied ändert die Vorlagen für eine Website, an der wir gerade arbeiten
- Sie fügen einige Bilder in das Verzeichnis images ein (vergessen aber, sie unter der Versionskontrolle hinzuzufügen)
- Sie schicken mir die Bilder später per Post zu.
- Ich füge die Bilder unter der Versionskontrolle hinzu und schiebe sie zusammen mit anderen Änderungen auf GitHub
- Sie können keine Aktualisierungen von GitHub beziehen, weil Git ihre Dateien nicht überschreiben will.
Ich erhalte folgende Fehlermeldung:
Fehler: Die nicht verfolgte Arbeitsbaumdatei 'public/images/icon.gif' würde beim Zusammenführen überschrieben werden
Wie kann ich Git zwingen, sie zu überschreiben? Die Person ist ein Designer - normalerweise löse ich alle Konflikte von Hand, so dass der Server die neueste Version hat, die er nur noch auf seinem Computer aktualisieren muss.
349 Stimmen
git reset --hard origin/branch_to_overwrite
54 Stimmen
Jeder, der dies liest und denkt, dass er Dateien verlieren könnte, ich war in dieser Position und fand, dass der Puffer von Sublime Text mich gerettet hat - wenn ich an etwas arbeite, dann versehentlich alles lösche, indem ich versuche, ein ähnliches Problem wie dieses zu lösen oder indem ich eine Antwort auf diese Frage benutze und die Dateien in Sublime geöffnet hatte (was eine gute Chance ist), dann sind die Dateien immer noch in Sublime, entweder gerade dort oder in der Undo-Historie
6 Stimmen
Im Grunde genommen sollten Sie nur nach dem ersten Checkout einen Pull aus der Entwicklung durchführen -b. machen Sie Ihre Arbeit und pushen Sie dann wieder zurück.
5 Stimmen
Kurze Antwort: Löschen Sie den Zweig und legen Sie ihn neu an. 1. Zweig löschen:
git branch <branch> -D
2. Zurücksetzen auf einen Commit vor dem Konflikt:git reset <commit> --hard
3. Legen Sie den Zweig neu an:git branch <branch>
4. Stellen Sie die Verfolgung zum Server ein:git --set-upstream-to=origin/<branch> <branch> 5. Pull:
git pull`6 Stimmen
So ändern Sie alle CRLF- in LF-Endungen (beginnen Sie sauber)
git config core.autocrlf false; git ls-files -z | xargs -0 rm; git checkout .
2 Stimmen
Vielleicht suchen Sie stattdessen nach dieser Frage: statt stackoverflow.com/q/1628088/1148030 "Zurücksetzen des Zweigs des lokalen Repositorys, so dass er genauso ist wie der Zweig des entfernten Repositorys HEAD" Zum Beispiel, wenn das entfernte Repository gepusht wurde und Sie es zurückziehen und die vorherige Version des Zweigs, die Sie haben, verwerfen wollen. (Einige andere Fragen verweisen auf diese Frage als ihr Duplikat, aber ich denke, sie sollten auf diese andere Frage verweisen).
0 Stimmen
Manuelles Löschen aller Dateien und Ordner aus dem lokalen Repository. Führen Sie dann
git checkout <branch> && git add -A . && git reset --hard origin/<branch> && git pull
. Siehe stackoverflow.com/a/65239330 .0 Stimmen
Es gibt definitiv eine Antwort darauf, denn ich habe es aus Versehen getan. Jetzt sind viele Wochen Arbeit verloren :(
0 Stimmen
Möglicherweise möchten Sie einfach Ihren lokalen Ordner löschen und ihn erneut von Ihrem Git-Repository herunterladen, indem Sie
git clone <http://github.com/your_user/your_repository.git>
0 Stimmen
Wenn Sie es in einem Skript verwenden wollen, lesen Sie meine Antwort: stackoverflow.com/questions/1125968/