关闭

git 使用

标签: gitgit使用git rebase
280人阅读 评论(0) 收藏 举报

一、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使用规范

开发流程

  1. 新建开发功能分支
    1. git checkout develop
    2. git checkout -b feature/功能描述 (feature/user_apis) *如果分支在本地存在,请选使用git branch -d 删除该分支
  2. 编代码 测试
  3. 提交代码
    1. git commit 修改的文件
    2. 确认是否开发完成, 还没完成 跳转到 2  编代码 测试
    3. git fetch origin develop 获取最新的develop代码
    4. git rebase origin/develop 同步开发期间的develop改动
  4. 合并到develop分支
    1. git push origin feature/功能描述
    2. 去服务端创建Merge Request,并指定给对应的人做Code Review
    3. 通过Merge的Request进行沟通, 如需要调整代码,在服务端对应的代码上进行标注,并通知开发人员确认需要修改 跳转到 2  编代码 测试
    4. 在服务端上完成代码的合并, 必须勾选删除源分支的选项 通知对应开发人员,功能已经合并
    5. 开发人员收到通知进行提测,并删除本地对应的feature分支

发布上线流程

  1. 新建release分支
    1. git checkout develop
    2. git pull origin develop提交代码
    3. git checkout -b release/将要上线的版本号 v+大版本号.小版本号.修订版本号 (v1.0.1)
  2. 合并代码到仿真环境 
    1. git checkout simulation
    2. git pull origin simulation
    3. git merge release/将要上线的版本号
  3. 提交上线单
  4. 通知op上线仿真环境代码
  5. 仿真测试 & BUG修复
  6. 确认仿真测试通过
  7. 提交代码
    1. git checkout -b release/将要上线的版本号
    2. git fetch origin master
    3. git rebase origin/master
    4. git tag -a 将要上线的版本号
    5. git checkout master
    6. git pull origin master
    7. git merge release/将要上线的版本号
    8. git push origin master
    9. git push --tags
    10. git branch -d release/将要上线的版本号
    11. git push origin :release/将要上线的版本号 删除服务器相对应的分支
    12. git checkout develop
    13. git rebase master
    14. git push origin develop
  8. 上线代码
  9. 线上测试
  10. 反馈

BUG修复

  1. 更新代码
    1. 确认问题所在的分支 release 或 develop 并使用git checkout 到该分支
    2. git submodule foreach git pull origin develop
    3. git checkout -b bugfix/BUG描述 (bugfix/username_allow_empty) *如果分支在本地存在,请选使用git branch -d 删除该分支
  2. 编代码 & 测试
  3. 提交代码
    1. git commit 修改的文件
    2. 确认是否开发完成, 还没完成 跳转到 2  编代码 测试
    3. git fetch origin 问题所在的分支名称 release 或 develop  获取最新的代码
    4. git rebase origin/问题所在的分支名称 同步开发期间的问题所在的分支改动
  4. 合并到问题所在的分支 release 或 develop
    1. git push origin bugfix/BUG描述
    2. 服务端创建Merge Request,并指定给对应的人做Code Review, 确定要合进分支的名称 release 或 develop
    3. 通过Merge的Request进行沟通, 如需要调整代码,在服务端对应的代码上进行标注,并通知开发人员确认需要修改 跳转到 2  编代码 测试
    4. git.letv.cn上完成代码的合并, 必须勾选删除源分支的选项 通知对应开发人员,功能已经合并
    5. 开发人员收到通知后,立即删除本地对应的bugfix分支
    6. 如果问题出现在release分支,并准备上线,需要将release的代码同步到simulation
      1. git checkout simulation
      2. git merge release/v版本号
      3. git push simulation
      4. 继续发布上线流程

紧急上线

  1. 确认上线类型
    1. BUG类的上线先走测试流程,必须重现BUG
  2. 更新代码
    1. git checkout master
    2. git pull origin master
    3. git submodule foreach git pull origin develop
    4. git checkout -b hotfix/将要上线的版本号 (hotfix/v1.0.2) *如果分支在本地存在,请选使用git branch -d 删除该分支,必需是在要修订的版本号上修改修订版本比如 v1.0.1 -> v1.0.2 不能跳版本号
  3. 编写代码  & 测试
  4. 提交代码
    1. git commit 修改的文件
    2. git fetch origin master
    3. git rebase origin/master
    4. git push hotfix/将要上线的版本号
    5. 服务端创建Merge Request,并指定给对应的人做Code Review, 确定要合进分支的名称 master
    6. 通过Merge的Request进行沟通, 如需要调整代码,在服务端对应的代码上进行标注,并通知开发人员确认需要修改 跳转到 3  编代码 测试
    7. 服务端上完成代码的合并, 必须勾选删除源分支的选项 通知对应开发人员,功能已经合并
    8. 开发人员收到通知后,立即删除本地对应的hotfix分支
  5. 合并代码到仿真环境
    1. git checkout simulation
    2. git pull origin simulation
    3. git merge master
  6. 提交上线单
  7. 通知op上线仿真环境代码
  8. 仿真测试 & BUG修复
  9. 确认仿真测试通过
  10. 提交代码
    1. git checkout master
    1. git tag -a 将要上线的版本号
    2. git push origin master
    3. git push --tags
    4. git checkout develop
    5. git rebase master
    6. git push origin develop
  11. 上线代码
  12. 线上测试
  13. 反馈


测试流程

  1. 更新代码
    1. git checkout develop
    2. git pull origin develop
    3. git submodule foreach git pull origin develop # 更新所有子模块
  2. 跳转到 开发流程
  3. 反馈
三、常遇到问题

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指向刚刚下载的最新的版本

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8556次
    • 积分:198
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:1篇
    • 译文:1篇
    • 评论:1条
    文章分类