2014-10-01 24 views
0

我們使用git,功能分支和重新綁定將功能分支引入主人。因此,我們的圖形看起來像這樣GIT,如何在工作流工作流程中應用錯誤修正

* 08a3854 - (master, Feature_2) implement feature_2 more 
* cf944c7 -      implement feature_2 ... 
* 4b4ed7c - (Feature_1)   implement feature_1 more 
* 483fd88 -      implement feature_1 ... 

如果我們現在檢測Feature_1的錯誤(這個功能是不是很老),我們將直接修復功能,在這一點上。首先,我們正在從Feature_1創建一個分支來進行修復。

* 08a3854 - (master, Feature_2) implement feature_2 more 
* cf944c7 -      implement feature_2 ... 
| * 2c383b6 - (Feature_1_fix) fix for feature_1 
|/ 
* 4b4ed7c - (Feature_1)   implement feature_1 more 
* 483fd88 -      implement feature_1 ... 

同時,我們希望把Feature_1_fix支進Feature_1分支,然後刪除修復分支之後,這樣的結果可能會是這樣結束。

* 08a3854 - (master, Feature_2) implement feature_2 more 
* cf944c7 -      implement feature_2 ... 
* 2c383b6 - (Feature_1)   fix for feature_1 
* 4b4ed7c -      implement feature_1 more 
* 483fd88 -      implement feature_1 ... 

這是可能的,我們必須做什麼?

回答

0

從某種意義上說,這在理論上是可行的,但你肯定不想這樣做。

每個提交的哈希都依賴於它的所有祖先。如果更改提交,則所有子提交的哈希值都會更改。從這個意義上說,你的第三個例子圖是錯誤的:提交cf944c7和08a3854會改變。

也許你聽說過這個咒語:不要重新綁定推送的分支。爲了達到您想要的效果,您必須將master重新綁定到feature_1_fix上。任何取決於當前主人的作品都必須重新設計。

08a3854 * (old obsolete master) implement_feature_2 more 
cf944c7 *      implement feature_2 
2222222 * | (master)    implement_feature_2 more 
1111111 */      implement feature_2 
2c383b6 * (Feature_1)   fix for feature_1 
4b4ed7c *       implement feature_1 more 
483fd88 *       implement feature_1 

提交1111111和2222222都是新的,大家誰在08a3854基礎的工作有變基這項工作到2222222爲好。

順便說一句:git不允許你推這樣的東西,而不明確指定--force標誌。

我建議只創建分支併合並它。我也不一定建議直接在功能的最後提交基礎上修復分支。如果您有很多更改,將其合併到當前主控中可能會導致很多衝突。