deutsch - Machen Sie den aktuellen Git-Zweig zu einem Master-Zweig




git rebase deutsch (8)

Ich habe ein Repository in Git. Ich machte einen Zweig, machte dann einige Änderungen sowohl an den Meister als auch an die Zweigstelle.

Dann, Dutzende von Commits später, erkannte ich, dass der Zweig in einem viel besseren Zustand als der Master ist, also möchte ich, dass der Zweig zum Master "wird" und die Änderungen am Master ignoriert.

Ich kann es nicht zusammenführen, weil ich die Änderungen am Master nicht behalten möchte. Was soll ich machen?

Extra : In diesem Fall wurde der 'alte' Master bereits in ein anderes Repository wie GitHub geschoben. Wie ändert sich das?


Benennen Sie den Zweig zum master durch:

git branch -M branch_name master

Benutzen:

get fetch && git checkout branch

Die hier angegebenen Lösungen (Umbenennung der Verzweigung in "Master") bestehen nicht auf den Konsequenzen für das Remote (GitHub) Repo:

    -f
    --force

Normalerweise verweigert der Befehl die Aktualisierung einer Remote-Referenz, die kein Vorgänger der lokalen Referenz ist, die zum Überschreiben verwendet wird. Dieses Flag deaktiviert die Überprüfung. Dies kann dazu führen, dass das Remote-Repository seine Commits verliert. Benutze es vorsichtig.

Wenn andere bereits Ihren Repo gezogen haben, können sie diesen neuen Master-Verlauf nicht mehr abrufen, ohne ihren eigenen Master durch den neuen GitHub-Master-Zweig zu ersetzen (oder mit vielen Zusammenführungen zu arbeiten).
Es gibt Alternativen zu einem Git Push - Force für öffentliche Repos .
Jefromis Antwort (die richtigen Änderungen zurück zum ursprünglichen Meister zusammenführen) ist einer von ihnen.


Ich fand diese einfache Methode, um am besten zu arbeiten. Es schreibt den Verlauf nicht neu und alle vorherigen Eincheckvorgänge des Zweigs werden an den Master angehängt. Nichts ist verloren, und Sie können deutlich sehen, was im Commit-Protokoll passiert ist.

Ziel: Machen Sie den aktuellen Status "Zweig" zum "Master"

Arbeiten Sie an einem Zweig, bestätigen Sie Ihre Änderungen und drücken Sie sie, um sicherzustellen, dass Ihre lokalen und Remote-Repositorys auf dem neuesten Stand sind:

git checkout master      # Set local repository to master
git reset --hard branch  # Force working tree and index to branch
git push origin master    # Update remote repository

Danach ist Ihr Master der genaue Status Ihres letzten Commits der Verzweigung und Ihr Master-Commit-Protokoll zeigt alle Check-Ins der Verzweigung an.


Man kann auch alle Dateien aus dem anderen Zweig in master auschecken:

git checkout master
git checkout better_branch -- .

und dann alle Änderungen festschreiben.


Stellen Sie sicher, dass alles in Ihr Remote-Repository (GitHub) verschoben wird:

git checkout master

Überschreiben Sie "Master" mit "better_branch":

git reset --hard better_branch

Erzwingen Sie den Push in Ihr Remote-Repository:

git push -f origin master

Von dem, was ich verstehe, können Sie den aktuellen Zweig in einen bestehenden Zweig verzweigen. Das überschreibt im Prinzip master mit dem, was Sie im aktuellen Zweig haben:

git branch -f master HEAD

Sobald Sie dies getan haben, können Sie normalerweise Ihren lokalen Masterzweig drücken, wofür möglicherweise auch der force- Parameter erforderlich ist:

git push -f origin master

Keine Zusammenführungen, keine langen Befehle. Einfach branch und push - aber, ja, das wird die Geschichte des master umschreiben. Wenn Sie also in einem Team arbeiten, müssen Sie wissen, was Sie tun.

Alternativ habe ich festgestellt, dass Sie jede Verzweigung an jede entfernte Zweigstelle senden können.

# This will force push the current branch to the remote master
git push -f origin HEAD:master

# Switch current branch to master
git checkout master

# Reset the local master branch to what's on the remote
git reset --hard origin/master

wenn Sie eGit in Eclipse verwenden

  • Klicken Sie mit der rechten Maustaste auf den Projektknoten
  • wähle team -> dann advanced -> dann filial umbenennen
  • Erweitern Sie dann den Remote-Tracking- Ordner
  • Wählen Sie den Zweig mit dem falschen Namen, klicken Sie dann auf den Umbenennen-Button und benennen Sie ihn um, egal wie der neue Name lautet
  • Wählen Sie den neuen Master und benennen Sie ihn in Master um




git