2013-03-14 11 views
6

Mam wadliwą gałąź master, którą potrzebuję do debugowania. Aby to zrobić, chcę wstawić kilka procedur debugowania (np. Drukowanie zmiennych), przypiąć błąd i zastosować poprawki. Później chcę scalić poprawki w gałęzi master, ale nie chcę pomijać zmian debugowania.git - gałąź "debugowania", scalanie gałęzi "fix" bez "debugowania"

# create debug branch 
git checkout -b debug 

# ... 
# edit sources and add debug prints 
# ... 

# commit debug changes 
git commit --all 

# create branch for the fix 
git checkout -b fix 

teraz zrobić odpowiednią poprawkę i zobowiązać

git commit --all 

idź do master oddział ...

git checkout master 

... i połączyć z fix bez debugowania zmienia

git merge fix # <-- wrong, will merge debug changes as well 

Jak połączyć fix bez debug?

+0

Potrzebujesz zmian wprowadzonych w debugowaniu w celu naprawy gałęzi? – iberbeu

Odpowiedz

7

To, czego szukasz, to opcja 'na' z 'git rebase' (patrz "git help rebase"). Z tego, co opisałeś byłoby:

git rebase --onto master debug fix 

To faktycznie re-korzenie przycisk (z 'fix', aby 'debug') zobowiązuje się na pana. Nadal masz gałąź z poprawkami. Aby zakończyć przeróbkę, wykonaj następujące czynności:

git checkout master 
git merge fix 
+0

Warto zauważyć, że po tej operacji '--onto' gałąź' fix' zawiera stały kod * bez * kodu debugowania. –

+0

Racja, właśnie to miałem na myśli, gdy mówiłem o moich "korzeniach". – GoZoner

+1

Ah. Przez '(fix-debug)' faktycznie masz na myśli * 'fix * minus * debugowanie' –