[英]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.