git專案實戰常用workflow和命令

世有因果知因求果發表於2015-05-28

一個從無到有的專案大體經歷-建立專案目錄,建立repo,配置過濾集,配置git user,匯入已有基礎程式碼入庫,將庫放到central去,建立分支,修改程式碼,checkin程式碼,分支上

測試驗證程式碼,merge穩定程式碼回主線,打tag,push到中央庫分享

   mkdir app
   cd app
   git init
   cd .git
   vi description
   cd info
   sudo vi exclude

   cd ../../ (app目錄)
   git add --all
   git commit

 git checkout develop :建立一個永久的branch : develop用於專案組做下一個release的開發

 git checkout featureteam_xxxfeature :建立一個為team開發共享半臨時的分支: featureteam_xxxfeature

   git remote add origin https://xxx@github.com/xxx/yyy.git

   git push origin master  :將上述專案的baseline,所有供開發測試的永久分支push到中央庫中

在生產伺服器上

git clone https://xxx@github.com/xxx/yyy.git /var/www/html/www/mywebsite

專案組開發環境中:

git clone  https://xxx@github.com/xxx/yyy.git

git checkout --track develop  :專案成員建立一個local tracking branch,和中央庫的develop建立對映關係

git checkout --track featureteam_xxxfeature :專案組feature team建立一個local tracking branch,和中央庫的featureteam_xxxfeature建議對映關係,以便共享工作和協同開發

   //git checkout -b develop 建立一個integration分支用於整合所有的feature

   git checkbout -b xxxfeature_zhangsan :建立xxxfeature分支下面的_zhangsan分支,以便本地開發,並且最終merge到xxxfeature分支,並且push相對穩定的版本到中央庫。注意:之所以不直接在featureteam_xxxfeature這個feature team共用的分支上直接開發,是因為有可能在本地開發過程中,需要pull feature team其他成員的貢獻到這個分支。
   git branch -a
   git commit -a -m "your commit msg" 

   git checkout featureteam_xxxfeature 

 git merge xxxfeature_zhangsan  :merge zhangsan的修改到xxxfeature_zhangsan公共分支上

   git push origin xxxfeature_zhangsan :分享自己測試完畢的feature程式碼

 


   git checkout develop
   git merge featureteam_xxxfeature  :由team leader來做整個feature的merge,並且push分享到develop整合流上去

   git push

 測試。。。

   繼續整合其他的feature,測試,版本基本穩定後

 git checkout master

   git merge develop

   git tag Release2.0 //所有穩定準備放到伺服器上部署的版本都放在master branch上

   git push origin master

 

生產環境伺服器上執行:

git pull origin master 部署新的程式碼

如果要在生產環境上rollback,則只需要git checkout Release1.0即可。當然在生產環境下的部署還有一些額外的工作,比如資料庫schema也發生了變化,生產資料的匯入等,可以通過hook來自動實現

相關文章