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:

git checkout master
git branch oldMaster

Alten Master löschen und neuen Master erstellen:

git checkout topicBranch
git branch -D master
git branch master

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.

Benutzer-Avatar
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

1178690cookie-checkGit: möglich, eine Verzweigung in den Master zu machen und Merge-Konflikte zu ignorieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy