為什么從這里開始
也許你對 git 的命令已經(jīng)很熟悉,能夠熟練的新建一個倉庫悬而,拉取、恢復(fù)锭汛、Merge你的項目笨奠,但每次用的時候依舊會有疑惑 ~ “這玩意兒到底哪里好用了?”唤殴。我相信這種經(jīng)歷不止我一個人體會過般婆,記了一大堆命令 ~ “到底要怎么用?”“上一次到哪了朵逝?我干了什么蔚袍?”。前幾天看了一篇介紹git-workflow的文章配名,突然覺得自己對git有了新的認(rèn)識 ~ “原來這些啤咽,早就有人想過了!”。人們之所以愛用git渠脉,并不是因為他那一大堆繁瑣的命令宇整,而是把這些命令按照一定的規(guī)則組織起來所形成的工作流 - Workflows
不同類型的工作流
自從2005年第一版發(fā)布以后,在這十幾年中芋膘,出現(xiàn)了各種不同的工作流鳞青,不能說哪一種最好霸饲,但你總能發(fā)現(xiàn)一個最適合自己項目的。下面是幾種比較有代表性的工作流臂拓,你可以在自己的項目中直接使用厚脉,或者在這些工作流上稍作修改找到最適合自己的。
集中式工作流(Centralized Workflow)
這種工作流只有一個公共的倉庫埃儿,每個成員工作時器仗,從公共的倉庫克隆項目到本地倉庫;在本地完成修改之后童番,提交到本地精钮;fetch遠(yuǎn)程倉庫(可能此時倉庫有其他人更新過),rebase你的修改到更新過的倉庫剃斧;將本地分支推送的公共倉庫轨香。
Git-flow Workflow
這個工作流有5種類型的分支
- 主分支
- master
- develop
- 協(xié)助分支
- feature
- release
- hotfix
這種工作流的倉庫中總會存在著兩個主分支 master
以及develop
,master分支中保存的是已經(jīng)或者將要發(fā)布的版本幼东,他可能不是最新的臂容,但一定是最穩(wěn)定的;develop分支就如其名字所示根蟹,開發(fā)工作主要集中在這個分支上脓杉。當(dāng)開發(fā)一個新功能是,你需要從develop新建一個分支(feature什么的)简逮,完成工作后再merge回develop分支球散。
feature
分支從develop分支中衍生出來,主要是進行一些新特性的開發(fā)
release
分支是測試分支散庶,當(dāng)你develop中的所有新功能都完成之后蕉堰,在合并到master分支發(fā)布之前,需要新建一個release分支進行測試悲龟,當(dāng)測試沒有問題時屋讶,將其合并到master分支發(fā)布
hotfix
分支直接從master分支衍生,主要是用來做一些緊急情況的修復(fù)须教,修復(fù)完成之后合并回master分支
Fork Workflow
這種工作流在一些開源項目中比較常用皿渗,github也采用的是這種工作流。
對于一個開源項目轻腺,一般會有一個主倉庫羹奉,只有項目的管理者可以直接與這個倉庫進行提交,其它開發(fā)者需要從主倉庫fork出來一個新的倉庫约计,所有的工作都在fork出來的倉庫中操作,完成后如果想merge到主倉庫迁筛,需要向項目管理員申請煤蚌。
總結(jié)
git的這些工作流耕挨,沒有好壞之分,關(guān)鍵是找到適合自己的尉桩,并且在自己的項目中去遵守與實踐筒占。
一些在工作流中用到的命令
# 新建一個空的倉庫
git init --bare 項目名稱.git
# 添加遠(yuǎn)程倉庫
git remote add 簡稱 ssh://software@172.16.0.30/~/yafeng/.git
# 向遠(yuǎn)程倉庫推送
git push 簡稱 master(分支名稱)
# 創(chuàng)建并切換到分支
git checkout -b develp
# 查看當(dāng)前分支
git branch
# 克隆遠(yuǎn)程倉庫分支
git clone -b <指定分支名> <遠(yuǎn)程倉庫地址>