用git管理项目流程
1.主管创建项目仓库,建立dev分支。
进入git相关网站,注册,创建项目。
本地安装git,版本最好低点,不然容易出问题,配置提交的姓名和邮箱。详情参见顶部提供的地址。
之后git命令操
克隆远程仓库
git clone 项目地址 # 例如:git clone git@888888888888888/test.git
创建dev分支
git branch dev
切换到dev分支
git checkout dev
将dev分支提交到远程服务器
git push origin dev
将本地分支跟踪服务器分支
git branch --set-upstream-to=origin/dev dev
2.建立主管和开发者的开发分支,添加其他开发者的ssh-key或者权限。
创建主管自己的开发分支,搭建项目框架并上传
创建并切换到自己的开发分支
git checkout -b 分支名称 # 例如:git checkout -b hufei
创建自己的项目框架,然后上传。
git add . # 添加到暂存区
git commit -m 'create layout' # 添加到仓库
git checkout dev # 切换到dev分支
git merge hufei # 将hufei分支上的项目框架合并到dev分支
git push origin dev # 发布服务器dev分支
开发者创建自己的账户,分支。并拉取dev分支上的项目框架。
开发者jike克隆远程代码
git clone 项目地址 # 例如:git clone git@github.com:******i/test.git
git branch # 发现只有master分支,需要同步dev分支
git checkout -b dev origin/dev # 根据服务器dev分支创建本地dev分支
git branch jike # 创建jike的开发分支
git checkout jike # 切换到jike分支
git merge dev # 合并dev分支上的项目框架
开发者jike修改自己的代码,并提交(工作中大量重复)
git add . # 添加到暂存区
git commit -m 'modify code' # 添加到仓库
git checkout dev # 切换到dev分支
git merge jike # 合并jike分支修改的代码
git push origin dev # 将dev分支的代码提交到服务器
3.合并代码流程,解决冲突。
对于jike修改的代码,另一个开发者tom休要获取更新
git checkout dev # 切换到dev分支
git pull # 获取服务器的更新内容
git checkout tom # 切换回tom分支
git merge dev # 把dev分支更改的内容合并到tom分支
双方都修改同一个文件,产生冲突,解决冲突。
假如tom和jike都对index.html文件做了修改,都在自己分支上做了提交,此时jike先推上服务器,他代码不会出问题。
但是,当tom在dev分支上git pull更新代码后,在本地dev分支上做合并操作时,会出一个冲突,冲突会在文件中产生。此时需要tom和jike协作处理这段代码,然后tom再执行提交代码的操作,至此这个冲突解决。
4.master分支修改bug(主管)
将dev分支代码合并到master,待发布
git checkout master
git merge dev
git checkout hufei
此时,发现服务器代码有紧急bug,需要修改bug
git stash # 保存现场
git checkout master # 切换到master分支(不能直接编辑master)
git checkout -b bug001 # 新建解决bug分支bug001(临时的,用完即删)
git add .
git commit -m '修复紧急bug'
git checkout master # 切换到master
git merge --no-ff -m '修改bug' bug001 # 合并bug001分支
git push origin master # 推到远程master
git branch -d bug001 # 删除bug001
git checkout dev # 切换到dev分支
git merge master # 合并master分支,使dev分支最新
git checkout hufei # 切换回开发分支
git stash pop # 切换到工作现场,继续开发
5.发布
在master分支打tag,做备份
git tag 'v1.0.0'-light
git push origin --tags
git tags # 显示所有的tag版本