2016-08-09 104 views
2

Meine Masterkopie hat frühere Dateien in 2 Jahren zurück überprüft. Mein Entwicklungszweig ist auf dem neuesten Stand. Also möchte ich meine Master-Filiale mit Entwicklungszweig aktualisieren.In GIT, wie man einen Entwicklungszweig in den Masterzweig einfügt, indem der Masterzweig vollständig überschrieben wird?

versuchte ich git checkout master git merge -X ihre dev

aber es gibt einen Fehler „kann, die etwas, das wir nicht zusammenführen können“

Im Git Bahn, wenn ich einen neuen Zug zu schaffen versucht, Anfrage, es zeigt so "Es gibt nichts zu vergleichen. Master und Master-Clean sind völlig verschiedene Commit-Historien."

Meinten Sie Herkunft/Entwicklung?

+0

nur 'git checkout master' zweig und dann' git merge development' ausführen? –

+0

Nein, das will er nicht. Er will den alten "Meister" wegwerfen und mit der aktuellen "Entwicklung" beginnen. – AnoE

+0

@AnoE Das ist ziemlich kryptisch, nach dem Lesen * "... ich möchte meine Master-Zweigstelle mit Entwicklungszweig aktualisieren." * Ich dachte, er möchte nur auf seinem Master zusammenführen –

Antwort

3

So sammelt die Informationen aus allen Ihren Kommentaren und Ihrem OP, haben Sie diese Situation:

  • Fern (github) Repository mit einem 2 Jahren alten, unbenutzten, master Zweig und einem aktuellen development Zweig. Nennen wir dieses Repository origin.
  • Sie möchten die Fernbedienung master komplett loswerden und durch die development Verzweigung ersetzen.
  • Ich gehe davon aus, dass Ihr lokales Arbeits-Repository aktuell ist mit origin, d. H. Sie haben alles, was Sie geändert haben, kürzlich in development übernommen.

Deshalb schlage ich vor:

git checkout development ; git pull  # just in case 
git branch master development -f 
git checkout master 
git push origin master -f 

Dies wird:

  • Synchronisieren Sie Ihren lokalen development Zweig mit der Fernbedienung ein, nur für den Fall. Nach dieser Operation sollten sie genau gleich sein. git status sollte Ihnen das deutlich sagen.
  • Dann setzen Sie die master, um lokal auf das gleiche Commit wie development zeigen.
  • Dann gehen Sie zur Kasse und drücken Sie master auf die Fernbedienung, überschreiben, was auch immer es vorher war.

Nach diesem development, master, origin/development, origin/master alle auf die gleiche begehen, das ist, was auch immer Ihre development vorher war.

+0

Großartig !!, es hat funktioniert. Danke für die Hilfe. –

+0

Danke für die Lösung! Genau das, was ich gesucht habe. +1! – rmbianchi

0

Sie können sie ganz Ihren master-Zweig löschen: git branch -D master

Dann neu erstellen aus Ihrem Entwicklungszweig: git checkout -b master development

+0

Was macht "git checkout -b master development"? –

+0

Wie kann ich dann zum letzten Commit des Master-Zweiges zurückkehren, bevor es zusammengeführt wird? –

+0

'git checkout -b Meisterentwicklung' tut was Marc-Alexandre gesagt hat; es erstellt einen Zweig von einem anderen. Details siehe 'git help checkout'. – AnoE

0

Toss aktuellen Master und verwenden Sie den Dev-Zweig?

git push origin dev:master --force 

, dass dieser Master Zweig auf der Fernbedienung mit dem Entwicklungszweig überschreibt ...

Warum sollten Sie das jemals tun - dies wird alle anderen in der Code-Basis arbeiten.