簡體   English   中英

GIT,如何在基礎工作流程中應用錯誤修正

[英]GIT, How to apply a bugfix in a rebase workflow

我們正在使用git,功能分支和rebase將功能分支帶入我們的母版。 所以我們的圖看起來像這樣

* 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分支,然后再刪除fix分支,以便結果看起來像這樣。

* 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 ...

有可能嗎,我們該怎么辦?

從某種意義上說,這在理論上是可能的,但您絕對不想這樣做。

每次提交的哈希值都取決於其所有祖先。 如果更改提交,則所有子提交的哈希值都會更改。 從這種意義上講,您的第三個示例圖是錯誤的:提交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標志的情況下推送類似內容。

我建議簡單地創建分支並合並它。 我也不一定建議直接在功能的最后一次提交基礎上將fix分支作為基礎。 如果您有很多更改,將其合並到當前的母版中可能會導致很多沖突。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM