In meinem Fall hatte ich einen lokalen Commit, der nicht nach origin\master
aber an mein lokales Unternehmen gebunden master
Zweigstelle. Dieser lokale Commit sollte nun in einen anderen Zweig verschoben werden.
Avec Git-Erweiterungen können Sie etwa so vorgehen:
- (Erstellen Sie, falls noch nicht vorhanden, und) checken Sie den neuen Zweig aus, in den Sie Ihren Commit verschieben wollen.
- Wählen Sie den Commit aus der Historie aus, der in diesen Zweig übertragen und gepusht werden soll.
- Klicken Sie mit der rechten Maustaste und wählen Sie Cherry Pick Commit .
- Presse Kirschen pflücken Taste nach.
- Der ausgewählte Commit wird auf Ihren ausgecheckten Zweig angewendet. Nun committen und pushen Sie es.
- Schauen Sie sich Ihren alten Zweig mit dem fehlerhaften Commit an.
- Setzen Sie diesen Zweig auf den vorletzten Commit zurück, bei dem alles in Ordnung war (achten Sie darauf, was Sie hier tun!). Sie können das tun, indem Sie mit der rechten Maustaste auf die vorletzte Übergabe klicken und Aktuelle Verzweigung hierher zurücksetzen . Bestätigen Sie die Opperation, wenn Sie wissen, was Sie tun.
Sie könnten das auch auf der GIT-Befehlszeile . Beispiel kopiert aus David Christensen :
Ich denke, Sie werden feststellen, dass git cherry-pick
+ git reset
t schnellerer Arbeitsablauf:
Unter Verwendung desselben Szenarios, wobei "Feature" der Zweig mit der oberste Commit falsch ist, wäre es viel einfacher, dies zu tun:
git checkout master
git cherry-pick feature
git checkout feature
git reset --hard HEAD^
Das spart eine Menge Arbeit und ist das Szenario, das git cherry-pick
entwickelt wurde, zu bewältigen.
Ich möchte auch darauf hinweisen, dass dies auch funktioniert, wenn es nicht die Commit ist; man braucht nur eine über:
git checkout master
git cherry-pick $sha1
git checkout feature
git rebase -i ... # whack the specific commit from the history