[英]How to carry out parallel development and 'small' merges in multiple branches in Git
我們有一個主分支m
,其中我們有一個線性歷史並合並到通常相對較短的特征分支F1
, F2
,......像這樣:
* 343b52f - (11 days ago) Merge branch 'F495' into 'master' - Torque
|\
| * 52fc5a2 - (11 days ago) Add various QOL tools to make working inside Docker more convenient - Torque
|/
* 1eaa8df - (2 weeks ago) Merge branch 'F494' into 'master' - Boss
|\
| * 9758e64 - (2 weeks ago) Use company-php-commons as source for custom DQL functions - Boss
| * 2c8ee88 - (2 weeks ago) Upgrade to latest company-php-commons (for custom DQL functions) - Boss
|/
* a1d7acc - (3 weeks ago) Merge branch 'F493' into 'master' - Coworker
|\
| * 149ead1 - (3 weeks ago) Update: Device Amount Calculation - Coworker
|/
* f69c844 - (3 weeks ago) Merge branch 'F492' into 'master' - Torque
[...]
功能分支並不總是這么短。 我不想讓帖子膨脹太多。 現在,我們正在計划一個新的、長期存在的分支來實現更好的調試日志記錄, LD
。 在那個分支中,我們將把改進日志記錄的提交放到我們現有的代碼庫中,我們不想每隔一天將它合並到 master 中,而是在考慮完成后合並它。
我們希望在未來的功能分支LD
Fn+1
中從這些更改中獲利(僅在開發期間!),但我們不太了解如何 - 一旦我們想要合並Fn+1
進入 master m
,我看不到LD
提交如何不會過早進入m
。
有沒有辦法“臨時”將LD
合並到Fn+1
中,並在我們將Fn+1
合並到m
之前“取消合並” LD
? 由於LD
僅包含核心產品中的代碼,而Fn+1
將幾乎完全包含(記錄)隔離類中的代碼,我們不希望看到合並沖突和/或代碼路徑沖突,或者至少很少看到。
開發新功能 -
結帳最新LD
:
git checkout LD
創建一個新的功能分支:
git checkout -b f500
在功能分支中做一些事情:
git add ...
git commit ...
git add ...
git commit ...
現在您想在 master 中進行這些更改,請執行 rebase:
git rebase --onto m LD
這將“移動”您的f500
分支,就好像它從 master 分支一樣。
但是請注意,如果您的任何 f500 代碼依賴於LD
相關代碼,它將無法正常工作,因為LD
代碼不在 master 中,因此請確保您從未實際提交LD
相關代碼
最簡單的方法是設法以某種方式提交 master 中的代碼。
您仍然可以將其從生產版本中排除; 根據您使用的語言,您可以:
debuglogger
中明確排除目錄調試記錄器DebugLogger
的代碼一種駭人聽聞的方式:
project/
├── .git
├── debuglogger # version debuglogger in a separate repo
│ ├── .git # and clone it locally on the developers' laptops
│ └── sourcefile
├── dir1
├── dir2
├── sourcefile1
├── sourcefile2
...
如果您在工作機器上克隆debuglogger
器:
git
命令將完全忽略此子目錄debuglogger
的代碼,例如:
env = dev
,包括debuglogger
DebugLogger
class 可用,則加載它debuglogger/
存在,請將其包含在編譯腳本中 當您認為您的功能准備就緒時,您可以將其作為單個提交或導入其歷史記錄(例如使用git subtree
)包含在您的主項目中。
此設置的 hacky 部分是:它打破了git
的一般想法,即“提交應該代表整個項目”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.