我目前正在使用git的項目。基本上,我的git樹由三個分支:如何使用git處理此修補程序問題?
- 分公司一個:起源分支,從中派生我的工作。
- 分行B:分行根據A。 B包含開發工作(A的新功能)。
- 分支C:出於時間管理的原因,我也開始爲新功能開發不完整的實驗選項。此實驗代碼直接添加到B。所以C是清理分支B,只保留完全可操作的代碼。
分支關係可以以這種方式來表示:
甲頭 - >乙 - >提交0 - > - >提交Ñ - >C - >清理承諾
分支B包含所有新功能的代碼,有時與仍在開發中的可選分段混合在一起。 C中的所有提交都是實驗部分的刪除。
分支中的代碼C很乾淨,我想從中僞造一個補丁。該補丁應該包含從上次提交的C到A的頭部的所有更改。
如果我這樣做git format-patch master --stdout > my_patch.patch
,這會產生一個補丁程序,它將在操作代碼中有效結束。但是這樣做並不好,因爲在補丁中添加了實驗代碼(通過B中的某些提交),然後刪除(清除提交C)。除了不聰明之外,這還包括無用的額外空間(意味着額外的郵件與社區共享補丁)以及應用程序的額外開銷。
我應該如何操作這些分支來生成乾淨的補丁?請注意,我想保留到目前爲止在分支B中所做的實驗性工作,我只是不希望將它包含在補丁中。
有沒有一個特定的原因,你不使用[櫻桃挑](https://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html)? – 2013-04-09 08:49:16
@MohamedTarek你推薦我創建一個派生自__A__的新分支,然後選擇在__B__中應用的更改?我是否正確? – Rerito 2013-04-09 08:56:58
這個答案可能是相關的,http://rckoverflow.com/a/1624723/ – Hasturkun 2013-04-09 09:32:12