一個從無到有的專案大體經歷-建立專案目錄,建立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來自動實現