Git: möglich, eine Verzweigung in den Master zu machen und Merge-Konflikte zu ignorieren?
Lesezeit: 3 Minuten
Ich habe zusätzlich zum Master ein Git-Repo mit einem Zweig. Ich möchte diesen einen Zweig zum Master machen und den Master vollständig überschreiben. Natürlich könnte ich eine Zusammenführung durchführen, aber dies führt zu vielen Konflikten, und es scheint eine Menge Arbeit zu sein, sie zu lösen, wenn ich weiß, dass ich IMMER die Datei aus dem zusätzlichen Zweig haben möchte, nicht aus dem Master.
Ist es möglich, einen Zweig in einen Master zu konvertieren oder eine Zusammenführung durchzuführen und Git anzuweisen, die Datei von einem Zweig immer gegenüber dem anderen zu bevorzugen?
Danke im Voraus!
Sie können dies auf einen Schlag mit dem Reset-Befehl tun:
git checkout master
git reset --hard topicBranch
Bei einem Hard-Reset zeigt der aktuelle Branch auf das angegebene Commit. Dadurch werden alle Commits auf dem Master verworfen, die sich nicht bereits im Topic-Zweig befinden; sie werden nicht zusammengeführt.
Die gleiche Warnung für Rebases gilt auch hier: Tun Sie dies nicht, wenn Sie den Master-Branch bereits in ein Repository gepusht haben, das mit anderen Entwicklern geteilt wird.
+1, aber Sie sollten wahrscheinlich die übliche Warnung hinzufügen git reset --hard verwirft alle nicht festgeschriebenen Änderungen.
– Mark Longair
19. Oktober 2011 um 7:42 Uhr
Ich musste einen zusätzlichen Schritt machen. Git dachte, es gäbe Änderungen zu ziehen, als ich einen Git-Pull durchführte, hatte ich Merge-Konflikte. Stattdessen tat ich es git push -f den Stoß zu erzwingen
– Held erzwingen
19. August 2016 um 9:18 Uhr
Sie sollten diese Antwort überprüfen, bevor Sie fortfahren: stackoverflow.com/questions/2763006/…
– Ronen
2. November 2017 um 14:43 Uhr
Wenn Sie der einzige Entwickler sind, der auf dieses Repository zugreift und es nicht mit anderen Entwicklern geteilt wird, ist dies ziemlich einfach, indem Sie neue Branches erstellen. Bevor Sie beginnen, vergewissern Sie sich, dass Ihr Repository sauber ist (alle Änderungen wurden in den aktuellen Zweig eingecheckt).
Erstellen Sie ein Backup Ihres alten Master-Zweigs:
Wenn Sie das Repository auf einem Remote-Server hosten, müssen Sie die Remote aktualisieren:
git push --force remoteName master:master
WICHTIG: Wenn andere Entwickler aus Ihrem Repository gezogen haben, generiert diese Methode Fehler für sie, wenn sie das nächste Mal aus Ihrem Repository ziehen oder Sie in ihr Repository pushen.
Batkins
Ich bin immer noch kein Git-Experte, aber es sieht so aus, als ob Sie das wollen rebasieren Befehl:
git checkout branch_name
git rebase master
git checkout master
Sieht so aus, als würde dies alle Änderungen automatisch in Ihrem Master an dem Punkt zusammenführen, an dem Ihr Zweig vom Master abweicht, und dann die aktuellen Änderungen erneut auf den Master auf diese Änderungen anwenden (damit Sie nicht zusammenführen müssen).
Wenn Sie natürlich nur den Master vollständig überschreiben wollten, sollten Sie diesen Zweig einfach in das Master-Repository verschieben können, wenn Sie die Force-Option verwenden. Etwas wie das:
git push --force origin branch_name
Dann hat Ihre Fernbedienung alle Änderungen von Ihrem Zweig im Hauptzweig, und Sie können sie wieder herausziehen …
git checkout master
git pull --force origin
11786900cookie-checkGit: möglich, eine Verzweigung in den Master zu machen und Merge-Konflikte zu ignorieren?yes