2013-05-28 16 views
5

Jakie masz opcje, jeśli chcesz "cofnąć" gałąź funkcji? Załóżmy, że dodajesz nową funkcję, którą kończysz (scalasz z rozwojem i usuwasz gałąź funkcji), a następnie przechodzi do wydania. Ale twoi użytkownicy naprawdę nie lubią tego supercool-feature. Jak mogę cofnąć/cofnąć/odwrócić tę funkcję, która została już scalona w programowanie i wydanie?Git-Flow cofnąć ukończoną gałąź funkcji

Używam SourceTree do wykonania mojej wersji.

+1

Dobrze przywrócić seryjnej ... Oczywiście jest to mało bardziej skomplikowane, ale szczegóły leżą w sposobie organizowania kodu i testów itp. Mam wrażenie, że na to pytanie jest więcej. –

+0

To również nie jest pytanie specyficzne dla git-flow. To, co zrobił dla ciebie git-flow, to po prostu stworzyć gałąź z funkcjami, a następnie połączyć ją z powrotem w rozwój. W git-flow nie ma żadnych magicznych rzeczy, to tylko git. –

+0

@AlexBrown, więc w jaki sposób mogę przywrócić scalenie? Nie jestem pewien, czy wiesz, jak działa proces Git-Flow. Ale kiedy skończysz funkcję w git-flow, zostanie ona scalona w gałąź "development", a następnie gałąź funkcji zostanie usunięta. Decydując się na wydanie wersji, tworzysz nową gałąź z programowania i wprowadzasz zmiany specyficzne dla danego wydania, a następnie scalasz je w "master". Jak więc powrócić do "supercoola-funkcji", która została scalona w rozwój? –

Odpowiedz

12

Run to polecenie

git revert -m 1 <sha1 of M> 

Wyjaśnienie

Twoja sytuacja jest o co następuje:

A-B-----C---D-M  # master 
    \  /
    X-Y---Z-  # supercool-feature 

A, B, C i D były w twój główny stanik nch, X, Y i Z w gałęzi funkcji. Kiedy zrobiłeś git merge supercool-feature Git stworzył dla ciebie "scalenie zatwierdzenia". To zatwierdzenie obejmuje wszystkie zatwierdzenia z gałęzi funkcji, a także możliwe poprawki rozwiązujące konflikty scalania. Jeśli więc revert to zatwierdzenie, każda zmiana z Twojej gałęzi funkcjonalności znowu zniknie.

+1

+1 za zrobienie dzieła sztuki ASCII :) – bigge

+0

Adwokat diabłów: skąd wiadomo, aby usunąć wszystko z supercoolowej funkcji XZY, a nie wszystko z master (CD)? scalanie jest symetryczne ... – mnagel

+0

Scalenia nie są symetryczne. 'git merge' sprawdza zestaw zmian z gałęzi do scalenia (' git diff B ..Z') i zgniata go do jednego zatwierdzenia. –

1

Właściwie polecenie jest

git revert -m 1 <sha1 of M> 

które usuwają M przeniesienie z powrotem na oddział zawierającego X, Y, Z, który nie jest Mainline 1.