2011-10-21 28 views
16

Zrobiłem serię commits po dobrym zatwierdzeniu na master branch, co z perspektywy czasu powinienem był zrobić w innym oddziale. Czy mogę przenieść te zatwierdzenia, zaczynając od określonego zatwierdzenia, do innej gałęzi i zachować dobre zatwierdzenie jako ostatnie zatwierdzenie na master?Git: przenoszenie commitów z master do innego oddziału

+0

Prawdopodobny duplikat [Przenieś najnowsze zatwierdzenia do nowego oddziału za pomocą Git] (http://stackoverflow.com/questions/1628563/move-the-most-recent-commits-to-a -nowy-oddział-z-gitem) –

Odpowiedz

25

Sure:

$ git branch new-branch-name      # Create a new branch from the current commit 
$ git reset --hard <last good commit on master> # Reset master to the good commit 
+0

To było łatwe. Dzięki! –

+0

Więc jeśli chcę usunąć ostatnie dwa zatwierdzenia z wzorca do innego oddziału. I checkout ostatnie zatwierdzenie mistrza, stamtąd oddziału, a następnie zresetować master HEAD ~ 2? Nie usunie to również zatwierdzeń z oddziału? Czy oznacza to, że zatwierdzenia nie są usuwane, tylko wskaźnik wzorca wskazuje teraz dwa zatwierdzenia wcześniej? To jest zresetowane po prostu przesuwa wskaźnik gałęzi o kilka zatwierdzeń wcześniej? – croraf

+0

@croraf: Oddział będzie nadal wskazywał na poprzednie dwa zatwierdzenia, które były na wzorcu. – mipadi

1

Tak, można, a to byłoby 2 oddzielne operacje:

Skopiuj commity z jednego oddziału do oddziału, który chcesz, żeby być:

git cherry-pick <hash_of_commit> --onto <target_branch> 

następnie naprawić mistrza oddział powraca do dobra popełnić:

git checkout master 
git reset --hard <hash_of_good_commit> 
Powiązane problemy