2010-11-08 152 views
18

我已將一堆更改提交到我的git存儲庫的主分支上,並將其推送到上游(儘管我是唯一一個從事這些工作的人)。我想做什麼將這些最後幾個提交關閉,在主提交之前將主服務器回滾,重新將提交應用到開發分支,然後合併回主服務器。將提交從一個分支移動到另一個分支

這裏就是我的倉庫貌似現在:

a [master] [remotes/origin/master] 
| 
b 
| 
c 
| 
d (merge branch 'develop') 
|\ 
| \ 
| e [develop] [remotes/origin/develop] 
| | 
q f 
| | 
r g 

這裏就是我想要它看起來像:

Z [master] [remotes/origin/master] 
|\ 
| \ 
| A 
| | 
| B 
| | 
d C 
|\ | 
| \| 
| e [develop] [remotes/origin/develop] 
| | 
q f 
| | 
r g 

我可以得到一些這方面的幫助?我認爲這是rebase的工作,但我不太確定如何實現。

+5

您的圖表困惑我要有點 - 在未來,你可能想按時間順序標記提交而不是反向。 – Cascabel 2010-11-08 03:37:14

回答

27

給你:

# move cba onto e 
git branch foo 
git rebase --onto <SHA1-e> <SHA1-d> foo 

# rewind master to d 
git checkout master 
git reset --hard <SHA1-d> 

# merge 
git merge foo 

你可能想選擇一個更具描述性的分支名稱與Foo,因爲它會被記錄在合併提交消息Z.

+0

謝謝,這就是我所需要的。我在那裏得到了部分途徑,但重置是我錯過的。 – Doug 2010-11-08 04:45:45

相關問題