【宅印團隊】動手用 git flow 工作流進行團隊協作開發

簡介

<p>
Git的出現,使軟件開發協作變得非常靈活方便,使用git 可以說是當今程序員的必備技能。Git 是一個布式版本控制系統,只要在團隊內部約定特定的工作流程,即可很方便、很有條理地進行團隊協作開發。這里是介紹幾種工作流的兩篇文章:《Git 工作流程》(By 阮一峰)《常見工作流比較》(翻譯 By 童仲毅)
我們團隊也使用 git 作為團隊開發協作工具,并使用 git flow 作為工作流。接下來我們從 git 的安裝和配置開始, 通過 簡單任務 的形式,一步步讓大家在實踐中使用 git flow 進行團隊項目開發。

下面我們先來看看我們要來一起完成的集體任務:一個超簡單的 "團隊成員介紹網站"。該網站的架構很簡單,包含一個主頁和許多個團隊成員的介紹頁面,網站的原型如下:

網站主頁: /index.html
個人介紹頁: /members/xiaoming

這里是已經部署的網站地址: http://birdylee.github.io/, 點開看看有哪些人的大名已經在上面了!每個 個人介紹頁 是由不的同人各自開發的,并通過我們將要介紹的工作流更新到我們的這個網站里面!跟著這個教程一步步做,你也可以在上面放上你的專屬頁哦!~

1、安裝和配置 git

Git 幾乎可以在任何平臺上使用,這里是 Git 官方下載地址。如果下載較慢,可以從國內鏡像下載(感謝廖雪峰老師的維護),下載后按默認選項安裝即可。
如果你是 windows 用戶,git 安裝后,可以在任意目錄的右鍵菜單找到 git bash here 選項,如下:

git bash here 選項

點擊即可在該目錄打開 git 命令終端:

git 命令終端

接下來我們來配置全局git基本信息,包括用戶名和郵箱,運行如下命令(<...>表示需要你自行填寫):
$ git config --global user.name <你的名字>
$ git config --global user.email <你的郵箱>

這些信息指明你的身份,這樣當你把代碼分享給出去的時候,別人可以通過這些git信息獲悉是哪些代碼是你寫的,并可以通過郵箱聯系你。

2、創建git倉庫

git倉庫(git repository)是一個項目目錄,這個目錄被 git 作為一個單位管理起來,該目錄下的每個文件都可以被 git 跟蹤。 git 倉庫分為 本地倉庫遠程倉庫,下面我們都來動手創建一個。為了演示協作工作流,我們從遠程倉庫開始講起。

2.2 創建遠程(云端) git倉庫:

git遠程倉庫就是放在 git 服務器的 git 倉庫。目前流行的 git 托管服務提供商有 github, gitlab 等,國內的有 git@osc(碼云), coding 等,我們這個項目將使用 github 存放項目代碼 (若無github賬號,請注冊一下,程序員必備)。
創建遠程倉庫有兩種方式:

  • 生成一個空的遠程倉庫
  • 從其他倉庫fork到自己的賬戶下

前者請參看git個人主頁,這里為了演示協作工作流,介紹后者。
首先,我們的項目會有一個創建好的 主倉庫,該倉庫由項目管理員管理,用來整合來自各個團隊成員的代碼,并對外發布。這個倉庫有兩個分支,dev 分支和 master 分支,dev 分支用來收集來自各個成員的更新,可以做到每夜更新,當 dev 分支達到特定的版本要求時,就可以合并入master 分支來進行發布一個版本。圖示如下:

主倉庫分支演進

只有項目管理員才有對這個倉庫的 “寫權限”, 其他普通成員只有對該倉庫 “讀權限”。
我們的學習任務主倉庫在這里:https://github.com/BirdyLee/birdylee.github.io

接下來,我們開始動手把自己的自我介紹的代碼放到該倉庫里面!我們先來介紹 "fork" , 簡單的理解就是復制一個倉庫到自己的 git 賬戶(組織)下,這樣子你就擁有了對該倉庫的寫入權限,我們來動手試試:

主倉庫

看到如下界面時,你已成功地把主倉庫地內容復制到自己的賬戶下,這時你對該倉庫有讀寫權限
注意到在倉庫名稱下面多了一行:'' forked from BirdyLee/birdylee.github.io" ,表明這個倉庫的 fork 來源。

對應的項目在自己的倉庫下

接下來,我們就可以在自己的倉庫里修改代碼了~當然,我們要把項目文件拉到本地來進行開發,下一節將介紹本地倉庫。

2.2 創建本地 git倉庫:

git 本地倉庫就是存放在你的電腦里的git倉庫。
創建本地倉庫有兩種方式:

  • 從本地現有文件夾創建
  • 拷貝遠程倉庫到本地

前者請參看廖雪峰git教程 ,這里為了演示工作流,演示如何從遠程倉庫獲取。

從遠程倉庫獲取項目代碼一般有兩種連接方式,HTTPS 和 SSH , 為了節省一些配置,在此使用 HTTPS 進行演示。關于SSH連接方式,請參看這里
登錄 你的賬戶 下的對應項目倉庫,復制項目的 HTTPS 地址:

Paste_Image.png

選擇存放項目的父文件夾(如桌面),右鍵打開本地git bash終端,運行
$ git clone https://github.com/<你的用戶名>/birdylee.github.io.git
(clone 后面的內容直接張貼即可)
運行成功后,可以看到生成一個目錄 “birdylee.github.io”, 該目錄就是項目目錄,是一個被 git追蹤的文件夾(可以暫時理解為本地git倉庫),打開該目錄,可見目錄結構如下:

目錄結構

項目中的 members 目錄保存著兩個模板(_template-advanced,_template-basic)和各個成員的文件夾(xiaoming, xiaojiu 等),打開項目根目錄 index.html 就可以看到網站的樣子。

主頁

3. 寫入自己的代碼

下面我們來看看,怎么把自己的名字加上去,我們使用基礎模板做演示:

打開members文件夾,在里面新建一個文件夾,命名為你想要的名字(最好是英文,不沖突即可) ,比如 xiaobai:

Paste_Image.png

拷貝 members/_template-advanced 目錄下的 index.html 到 xiaobao 目錄下,并 用編輯器 打開 members/xiaobai/index.html,
把這三個地方修改成你的信息,可自由發揮:

修改前

修改后

修改后記得保存,這樣就做好了你的介紹界面,接下來我們在主頁里添加一個按鈕鏈接到該頁面即可,用編輯器打開項目根目錄下的 index.html, 按照已有a標簽的格式添加一個a按鈕,把中間的文件夾名稱改成你的:

添加一個 a 標簽: <a href="members/xiaobai/index.html">小白</a>

保存!大功告成,你可以用瀏覽器打開它預覽啦~

主頁
小白介紹頁

還有高級模板,大家可以試試哦~

4. 逐步提交

接下來我們要把我們的修改逐層提交上去,提交流程如下,一共3步:

git 提交流程

我們來一步一步操作!

4.1 把修改提交到本地 git 倉庫

在你的項目目錄里,你可以發現一個 .git 文件夾(需要顯示 隱藏文件夾 才可以看見),這個文件夾就是一個實質性的git本地倉庫,里面保存著該項目目錄的版本、分支信息:

Paste_Image.png

首先,我們要把我們對該目錄所做的修改生成一個提交(commit),存入本地倉庫,分兩小步,原理如下:

提交一個版本

在項目根目錄打開git bash, 首先,我們使用 add 命令 $ git add --all 把所有修改存入暫存區,準備生成一個提交。接下來我們使用commit命令 $ git commit -m "<一些備注>" (如 $ git commit -m "來自小白的更新")把暫存區的修改生成一個提交(commit)。這樣完成了第一步了,你對項目所做的修改已經在本地git倉庫保存成一個提交版本。

4.2 把本地 git 倉庫 提交到 你的遠程git 倉庫

接下來,我們把本地 git 倉庫 提交到 你的遠程git 倉庫, 運行如下命令
$ git push
因為我們是用https方式連接的,所以需要輸入賬密,請按提示輸入。
(提示,運行 $git config --global credential.helper store 可以長期保存輸入的密碼,下次輸入賬密之后,以后就不用輸入了。)
(雖然https連接方式被號稱比較快,但本人還是推薦使用ssh連接方式,這樣可以不用在電腦保存你的 github 賬密。)

把新的 commit 推送到 遠程倉庫

這個操作可以定期完成,如每晚一次,這樣可以大大減少由于你的電腦故障帶來的代碼損失。

4.3 通過 pull request 把你的遠程git倉庫更新提交到主git倉庫

當你的代碼成功的完成某個指定的小功能時,你就可以申請把你的新代碼提交到主倉庫了~流程圖如下:

通過 pull request 提交更新

首先,登錄你的github倉庫,點擊 “New pull request”:

然后就會出現一個 改動比較界面,在標題下面這一欄選擇合并到哪個分支,我們選擇 dev :

base fork 選擇 BirdLee/birdylee.github.io, base 選擇 dev

這樣的意思是把你的賬戶下的 birdylee.github.io 倉庫里的 master 分支的更新合并到 BirdLee/birdylee.github.io 的 dev 分支。當出現 “ Able to merge ” 時,即可自動合并,這是你可以直接點擊 " Create pull request "。填入更新說明和詳情,即可成功創建 pull request:

Paste_Image.png

這樣項目管理員和其他項目成員就可以清楚的看到你對項目所做的修改,并進行討論或評論:

pull request 概況
查看變更的代碼

創建 pull request 后,項目管理員就會收到郵件通知,并開始審核你的 pull request。當代碼符合要求時,管理員會接受這個 pull request,這時,你的代碼就被整合到 主 git 倉庫,這樣你就對該項目做出了自己的貢獻了!這時登錄 http://birdylee.github.io,你就可以看到你專屬的按鈕了 ~

就這樣,我們就跑了一遍git flow工作流,是不是覺得還挺簡單的呢~ 整個 git flow,可以總結為下面這圖:

git工作流 (摘自阮一峰博客)

上面介紹的 git flow 是基本完整的,但為了盡量簡單,暫時忽略了諸如 代碼合并沖突定時 rebase 等問題,這些問題大家當遇到時再學習如何操作即可。

你做成功了嗎~?如果有任何疑問,歡迎在項目的 Issues 提出哦~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容