一、git安装配置
1、安装git工具(gitbash)
2、生成ssh key
git bash中输入 $ ssh-keygen -t rsa -C "your email address"
过程中如果没有更改生成地址,则在 C:/Users/你的名字/.ssh/目录下,打开id_rsa.pub文件。全选,复制,去web端add ssh key
在git bash 中: git clone 地址,同步代码
二、git使用规范
开发流程
- 新建开发功能分支
- git checkout develop
- git checkout -b feature/功能描述 (feature/user_apis) *如果分支在本地存在,请选使用git branch -d 删除该分支
- 编代码 测试
- 提交代码
- git commit 修改的文件
- 确认是否开发完成, 还没完成 跳转到 2 编代码 测试
- git fetch origin develop 获取最新的develop代码
- git rebase origin/develop 同步开发期间的develop改动
- 合并到develop分支
- git push origin feature/功能描述
- 去服务端创建Merge Request,并指定给对应的人做Code Review
- 通过Merge的Request进行沟通, 如需要调整代码,在服务端对应的代码上进行标注,并通知开发人员确认需要修改 跳转到 2 编代码 测试
- 在服务端上完成代码的合并, 必须勾选删除源分支的选项 通知对应开发人员,功能已经合并
- 开发人员收到通知进行提测,并删除本地对应的feature分支
发布上线流程
- 新建release分支
- git checkout develop
- git pull origin develop提交代码
- git checkout -b release/将要上线的版本号 v+大版本号.小版本号.修订版本号 (v1.0.1)
- 合并代码到仿真环境
- git checkout simulation
- git pull origin simulation
- git merge release/将要上线的版本号
- 提交上线单
- 通知op上线仿真环境代码
- 仿真测试 & BUG修复
- 确认仿真测试通过
- 提交代码
- git checkout -b release/将要上线的版本号
- git fetch origin master
- git rebase origin/master
- git tag -a 将要上线的版本号
- git checkout master
- git pull origin master
- git merge release/将要上线的版本号
- git push origin master
- git push --tags
- git branch -d release/将要上线的版本号
- git push origin :release/将要上线的版本号 删除服务器相对应的分支
- git checkout develop
- git rebase master
- git push origin develop
- 上线代码
- 线上测试
- 反馈
BUG修复
- 更新代码
- 确认问题所在的分支 release 或 develop 并使用git checkout 到该分支
- git submodule foreach git pull origin develop
- git checkout -b bugfix/BUG描述 (bugfix/username_allow_empty) *如果分支在本地存在,请选使用git branch -d 删除该分支
- 编代码 & 测试
- 提交代码
- git commit 修改的文件
- 确认是否开发完成, 还没完成 跳转到 2 编代码 测试
- git fetch origin 问题所在的分支名称 release 或 develop 获取最新的代码
- git rebase origin/问题所在的分支名称 同步开发期间的问题所在的分支改动
- 合并到问题所在的分支 release 或 develop
- git push origin bugfix/BUG描述
- 去服务端创建Merge Request,并指定给对应的人做Code Review, 确定要合进分支的名称 release 或 develop
- 通过Merge的Request进行沟通, 如需要调整代码,在服务端对应的代码上进行标注,并通知开发人员确认需要修改 跳转到 2 编代码 测试
- 在git.letv.cn上完成代码的合并, 必须勾选删除源分支的选项 通知对应开发人员,功能已经合并
- 开发人员收到通知后,立即删除本地对应的bugfix分支
- 如果问题出现在release分支,并准备上线,需要将release的代码同步到simulation
- git checkout simulation
- git merge release/v版本号
- git push simulation
- 继续发布上线流程
紧急上线
- 确认上线类型
- BUG类的上线先走测试流程,必须重现BUG
- 更新代码
- git checkout master
- git pull origin master
- git submodule foreach git pull origin develop
- git checkout -b hotfix/将要上线的版本号 (hotfix/v1.0.2) *如果分支在本地存在,请选使用git branch -d 删除该分支,必需是在要修订的版本号上修改修订版本比如 v1.0.1 -> v1.0.2 不能跳版本号
- 编写代码 & 测试
- 提交代码
- 合并代码到仿真环境
- git checkout simulation
- git pull origin simulation
- git merge master
- 提交上线单
- 通知op上线仿真环境代码
- 仿真测试 & BUG修复
- 确认仿真测试通过
- 提交代码
- git checkout master
- git tag -a 将要上线的版本号
- git push origin master
- git push --tags
- git checkout develop
- git rebase master
- git push origin develop
- 上线代码
- 线上测试
- 反馈
测试流程
- 更新代码
- git checkout develop
- git pull origin develop
- git submodule foreach git pull origin develop # 更新所有子模块
- 跳转到 开发流程
- 反馈
1、想回退到某个commit之前,git log查看commit_id
a、不保留commit_id之后的修改 git reset --hard commit_id
b、保留commit的修改,只是撤销本地cimmit状态 git rset --soft commit_id
2、commit提交有冲突,需要处理(使用rebase)
a、git fetch origin
b、git rebase origin
c、处理冲突
d、git add -u
e、git rebase --continue
在任何时候,你可以用git rebase --abort
参数来终止rebase的行动,并且当前分支 分支会回到rebase开始前的状态
3、
本地有修改和提交,如何强制用远程的库更新更新。我尝试过用git pull -f,总是提示 You have not concluded your merge. (MERGE_HEAD exists)。
我需要放弃本地的修改,用远程的库的内容就可以,应该如何做?傻傻地办法就是用心的目录重新clone一个,正确的做法是什么?
正确的做法应该是:
git fetch --all git reset --hard origin/master
git fetch 只是下载远程的库的内容,不做任何的合并git reset 把HEAD指向刚刚下载的最新的版本