2012-11-26 53 views
1

我有一個有趣的問題,我似乎無法找到這個再簡單不過的答案。我有3個跟蹤分支:master, staging, production。 Master是我玩的主要代碼,並將更改合併到其中。分段與我的heroku分段服務器設置完全相同,生產與分段相同。git的合併僅變更集

在互聯網一些閱讀後(忘記了我的書籤豆莖文章),一個很好的方式,對變化的工作是從主分支,做了一大堆的變化而定期提交。然後這個功能分支被合併到master中,並在我的開發機器上進行測試。

然後有點棘手,功能分支應合併到分段然後把它推到Heroku的分支。如果分段測試成功,我想將功能分支合併到生產中。

夠簡單。棘手的部分實際上是我在每個分支上有不同的設置。 Master有一些SSL的東西關閉等。分段有幾個不同的證書等。生產有一些新的跟蹤等。

做一個git merge似乎總是覆蓋我的設置。這太痛苦了。我一直在櫻桃採摘或git checkout <file list>合併個體變化。有什麼辦法可以解決:「將所有提交(變更集)從功能分支合併到暫存分支」,而不會帶來所有其他的東西?

回答

1

如果你去挑選櫻桃路線,如果你有很好的提交信息(即你可以解析的提交信息來選擇提交出口),你可以使用git-extract-patches

請注意,櫻桃採摘有一些缺點(duplication and functional dependencies),但如果您沒有合併回Stagingfeature-branch,那沒問題。

還要注意的是,對於分支之間VARRY單個文件,內容過濾器驅動程序也可以是另一種解決方案(避免任何合併的問題)。
以「Different versions of the same configuration file in different branches」爲例。

+0

我可以修改此腳本嘗試做一個補丁文件從所有提交的在一個單一的分支,因爲它是支。這是一個開始的好地方。等了幾天,看到更多的答案會通過。至少現在,我可以將分支名稱放在前面的提交消息中。乾杯! – dineth