一个从无到有的项目大体经历-创建项目目录,创建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://[email protected]/xxx/yyy.git
git push origin master :将上述项目的baseline,所有供开发测试的永久分支push到中央库中
在生产服务器上
git clone https://[email protected]/xxx/yyy.git /var/www/html/www/mywebsite
项目组开发环境中:
git clone https://[email protected]/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来自动实现