2013-01-24 13 views
18

Powiedzmy, że w master Mam funkcję wyłączoną. Pracuję na tej funkcji na gałęzi feature, więc mam specjalny commit $, który właśnie włącza tę funkcję. Teraz chcę scalić zmiany, które zrobiłem w feature w master, ale zachować zatwierdzanie aktywacji. Tak to jest jakGit: przenieś zatwierdzenie "na wierzch"

main: A--B--X--Y 
feature: A--B--$--C--D 

więc powiedzmy, że chcę to zrobić, przesuwając $ popełnić na szczycie cecha:

new feature: A--B--C--D--$ 

Jak bym się do tego zabrać?

Odpowiedz

20

git rebase -i B, a następnie przenieś $ na koniec listy, która pojawia się w edytorze. Zacznie się jako pierwszy wiersz w otwieranym pliku. Możesz też po prostu całkowicie usunąć tę linię, która po prostu usunie to zatwierdzenie z historii twojej gałęzi.

+0

Fajne dzięki! Teraz jest tak oczywiste, że powinienem użyć rebase, z jakiegoś powodu próbowałem rozwiązać go z wiśniami. –

+0

@AdrianPanasiuk, możesz też użyć wyboru wiśniowego, ale prawdopodobnie będzie to o wiele większy wysiłek. –

5

Jeśli chcesz zachować zaangażowanie w tej samej kolejności pod numerem feature, powinieneś utworzyć nowy oddział i wykonać następujące czynności. W przeciwnym razie po prostu zrobić to na feature

git rebase -i <sha for commit B> 

Move popełnić $ na dole listy

git checkout master 
git rebase feature <or the other branch name> 

To nie było dla mnie jasne w tej kwestii, ale jeśli nie chcą $ w ogóle, zamiast przesuwać go, usuń go po git rebase -i Chociaż będziesz chciał to zrobić w nowym oddziale, aby go nie zgubić. Kiedy zmieniasz historię.

Zakłada się także, że gałąź feature nie została przekazana do zdalnego sterowania, ponieważ historia przepisywania jest zła.

Powiązane problemy