2013-03-14 15 views
6

Ich habe einen Buggy master Zweig, den ich debuggen muss. Um das zu tun, möchte ich eine Reihe von Debug-Prozeduren einfügen (z. B. Drucken von Variablen), den Bug markieren und Fixes anwenden. Später möchte ich die Fixes in den Zweig master zusammenführen, aber ich möchte Debug-Änderungen nicht überspringen.git - "Debug" Zweig, merge "Fix" Zweig ohne "Debug"

# 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 

Jetzt tun die richtigen fix und begehen

git commit --all 

Zum master Zweig ...

git checkout master 

... und verschmelzen mit dem Update ohne Debug ändert

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

Wie wird fix ohne debug zusammengeführt?

+0

Benötigen Sie die Änderungen, die im Debug für die Zweigstellenbehebung vorgenommen wurden? – iberbeu

Antwort

7

Was Sie suchen, ist die 'on' Option von 'git rebase' (siehe 'git help rebase'). Von dem, was Sie beschrieben es wäre:

git rebase --onto master debug fix 

Diese tatsächlich wieder Wurzeln der (von ‚fix‘, zu ‚Debug‘) verpflichtet sich, Master. Sie haben immer noch den festen Zweig. Um die Nacharbeit abzuschließen, führen Sie folgende Schritte durch:

git checkout master 
git merge fix 
+0

Bemerkenswert, dass nach dieser '--onto'-Operation der 'fix'-Zweig einen festen Code * ohne * Debug-Code enthält. –

+0

Richtig, das meinte ich mit meiner "Re-Roots" -Aussage. – GoZoner

+1

Ah. Mit '(fix-debug)' meinst du eigentlich * 'fix * minus * debug' –