2013-03-14 97 views
6

我有一個馬車master分支,我需要調試。爲此,我想插入一堆調試過程(例如打印變量),指出錯誤並應用修復。後來,我想將修復程序合併到master分支中,但我不想忽略調試更改。git - 「調試」分支,合併「修復」分支沒有「調試」

# 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 

現在做適當的修復,並承諾

git commit --all 

轉到master分支...

git checkout master 

...與修復合併沒有調試改變

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

如何合併fix沒有debug

+0

您是否需要在調試中爲分支修復完成更改? – iberbeu 2013-03-14 22:40:40

回答

7

你在找的是'git rebase'的'上'選項(參見'git help rebase')。從你的描述會是怎樣:

git rebase --onto master debug fix 

這實際上重新根(從「修復」,到「調試」)在主承諾。你仍然有修復分支。要完成返工,請執行以下操作:

git checkout master 
git merge fix 
+0

值得注意的是,在這個'--onto'操作之後,'fix'分支包含沒有*調試代碼的固定代碼。 – 2013-03-15 12:11:49

+0

好的,這就是我的'重新根據'聲明的意思。 – GoZoner 2013-03-15 15:50:18

+1

啊。通過'(修復調試)'你真的*意味着*'修復*減去*調試' – 2016-03-04 20:13:01