2017-07-12 3 views
2

Ich habe BFG Repo Cleaner wie angewiesen here, und Push to Remote.Remote-Zweig ist sowohl hinter als auch vor dem Master

Danach erkannte ich, dass meine Filialen durch einige hundert Commits sowohl voraus als auch hinten sind.
Jeder Zweig sollte vor der Verwendung des Repo-Cleaners um einige wenige letzte Commits voraus sein. Ich denke, es hat eine völlig neue, völlig getrennte Geschichte geschaffen.

Ich habe versucht, einen Rebasemaster für jeden Zweig auszuführen, aber es scheint eine Menge Konfliktdateien zu geben. Es ist ziemlich viel durch die Geschichte und erwartet, Konflikte für jeden Commit zu lösen. Offensichtlich ist das sehr zeitaufwendig und es gibt viel Platz für Fehler.

Gibt es einen saubereren und schnelleren Weg, all diese lokalen Zweige zu reparieren, um vor dem Master nur durch die letzten Commits zu sein?

Antwort

2

Ich denke, dass es eine völlig neue, disjunkte Geschichte geschaffen hat.

Ja, das ist was BFG tut: Es schreibt den Verlauf neu, um die Commits bestimmter (großer) Dateien zu löschen.

Wenn Sie gezwungen haben, Push an die Fernbedienung zu senden, müssen Sie Ihre lokale Niederlassung auf die neue entfernte holen und zurücksetzen (stellen Sie sicher, dass keine lokalen Änderungen vorgenommen werden).

git fetch 
git branch tmp 
git reset --hard origin/myBranch 

Wenn Sie in tmp ein paar neue Commits haben, git cherry-pick sie auf der Oberseite des Reset-Zweig

Dann können Sie neue Commits von diesem neuen Staat machen wieder aufnehmen.

+0

Danke! Ich habe Ihren vorgeschlagenen Ansatz ausprobiert, aber nach dem Zurücksetzen gibt es nichts mehr zu tun - schwer. Vielleicht habe ich versäumt zu erklären, dass die Zweige auf der Fernbedienung bereits vor und hinter dem Master sind, und die lokalen Versionen sind im richtigen Zustand relativ zu ihrer Fernbedienung. Vielleicht klärt dieser Screenshot mein Problem: http://prntscr.com/fus03h Grundsätzlich sollten diese Zweige um 11, 3 und 11 Commits voraus sein, nicht 208, 200 und 208. Gibt es eine Möglichkeit, diese zurückzusetzen? – seemvision

+1

@seemvision es gibt nichts zu drücken nach 'reset --hard': das ist zu erwarten. Wenn Sie lokale Commits haben, müssen Sie diese zuerst aus 'tmp' (dem alten Zweig) auf den neuen Status des Zweigs auswählen und dann drücken. – VonC

Verwandte Themen