What have you found for these years?

2009-10-26

git rebase for cherry-pick

一個個 cherry-pick 很麻煩,也不支援大量 cherry-pick,
可靠 rebase 和暫時的 branch 做某種程度的大量 cherry-pick.

> git checkout stable # 希望 cherry-pick 者
> git checkout -b tmp # 工作 branch
> git merge master # 全部吃下來
> git rebase -i stable # 從 stable 處開始 rebase
# ...把不要的 commit 直接刪掉
# 清理 conflict
# 得到 stable + 部份 master commit
> git checkout stable # 回到希望 cherry-pick 者
> git merge tmp # 吃掉剛剛的部份 master commit
> git branch -d tmp # 刪除工作 branch

以上 tmp 可用 feature 的名字,比較清楚。
這個動作可以擴展到多人同時工作,就把 tmp push 上 github.
大概可以這樣分:

在 master 工作的人就任意工作。
release manager 在特殊的 branch 上把 feature 分開來。
確認沒問題後,最後 merge 進 stable.
可以用 --squash, 這樣對於 revert 會比較方便。

我在猜 liftweb 可能就是這樣做的?
因為有時候會看到大量的 branch 操作 @@

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0