2016-05-05 12 views
2

Ich war auf branch1 und es hat ein paar Commits, die ich für branch1 getan habe. Nachdem ich meine Aufgabe abgeschlossen habe (und diese Commits an Remote weiterleiten). Ich wechselte zu branch2 von branch1 mit dem folgenden BefehlLösche alle Commits, die ich geschoben habe

git checkout -b branch2

ich es von master schaffen sollte, aber ich erstellt fälschlicherweise aus branch1

ich einige Änderungen in branch2 gemacht und dann begehen/Push-to-den Fernbedienung per Befehl git push origin branch2. Jetzt, wenn ich auf Remote-Repo schaue, sehe ich alle meine branch1 Commits in der Geschichte von branch2.

Denken Sie daran, dass dies meine erste Verpflichtung zu branch2 war, so dass ich wirklich nicht über alle früheren Commits kümmern.

P. S

Einige weitere Hintergrundinformationen, wie Zweige verwandt sind.

Ich hatte einen Code, der in master Zweig war (die wir beschlossen haben, zu verschrotten). Nun habe ich eine neue Niederlassung branch1

> git status 
> on branch master 
> git checkout -b branch1 

das Grundgerüst des Projekts hat. Dieser Zweig (sobald er genehmigt wurde) wird in den Zweig master zusammengeführt (in diesem Fall überschreiben). Die branch2 hat Db-Schicht oben hinzugefügt. Theoretisch wäre es oben auf branch1 hinzugefügt werden, aber wenn ich tat so sah ich, dass branch2 all Commits hat, dass ich in branch1 hatte, die ich denke, dass, wenn wir Fusion branch1 auf master, gefolgt von branch2 wäre es nicht Doppel verursachen commits Geschichte? Das war der Grund, warum ich die vorherigen Commits löschen wollte (die von branch1 bis branch2 ausgeliehen wurden).

+0

Von welchem ​​Zweig/Commit wollten Sie 'branch2' erstellen? Ohne dies zu wissen, können wir Ihnen keine detaillierte Antwort geben, wie Sie Ihre Situation verbessern können. –

+0

Ich habe meine Frage aktualisiert. Ich wollte es von "Master" erstellen –

+2

Ich gab Ihnen eine Antwort.Wenn ich besser wüsste, wie 'branch1' und' master' verwandt sind, könnte ich andere Möglichkeiten geben, aber im Moment denke ich 'git cherry-pick' am sinnvollsten. –

Antwort

1

Wenn Sie tat:

git checkout -b branch2 

erstellt Sie branch2 oben auf branch1. Das bedeutet, dass alle Commits in branch1 da sein werden, wobei die neuen Commits, die du gemacht hast, zu branch2 hinzugefügt werden. Ohne zu wissen, wie die genaue Beziehung zwischen branch1 und master aussieht, aus der Sie wirklich Ihre Niederlassung erstellen wollten, könnte die beste Möglichkeit sein, die neuen Commits von branch2 auf einen Zweig zu setzen, der aus master:

erstellt wurde
git checkout branch2 
git log 
# observe and record the SHA-1 hashes of the commits you made 

git checkout master 
git checkout -b new_branch2 

# now cherry-pick the commits from branch2 which you want to keep 
git cherry-pick 2hie87jm8 # first commit 
git cherry-pick j2cnd82ld # second commit 
# and so on for all commits, in the order you made them 

Jetzt haben Sie Ihre Commits sitzen oben auf der richtigen Filiale. Sie können jetzt branch2 löschen über:

git branch -d branch2