美文网首页学习学习
gerrit提交代码

gerrit提交代码

作者: 大文茫 | 来源:发表于2018-09-27 13:29 被阅读0次

gerrit提交代码

【天下无难事,只要肯放弃】【都是自己理解的有误请指出】...................

一. 为什么写这篇文章

如果只看内容,请跳过这一节

原因主要有以下几个:

  1. 公司用到了,需要了解一下
  2. 一直对git rebase合并和git merge的合并简单学一下
  3. 任性,写一下

二. 过程

由于我的东西都是我自己的理解,怎么使用是按照在公司的使用方式

希望理解不足的还请大家指出

接下来,我将用以下几个点去讲

  • 含有git merge 的提交做法
  • 含有git rebase 的提交做法
  • git merge 和 rebase的简单理解
  • 自我总结

三. 含有git merge 的提交做法

平时自己写代码,提交代码时都是用的下面的流程

- 在master确定的分支操作
# 1.文件add
git add [file]
# 2.文件入库commit
git commit -m"[注释]"
# 3.获取更新的代码
git pull # 若有别人的提交,则会产生一条merge的commit
# 4. 若有冲突则重复 1[add],2[commit],3[pull]
# 5. 若无冲突,推到远程仓库
git push

- 若有多个分支dev 开发 master提交
# 在dev进行上述1[add],2[commit]
# 切换分支需要保证dev的工作空间是干净的
git checkout master
# 更新master分支的代码
git pull
# 合并dev的代码
git merge dev
# 若有冲突按照上述4操作
# 若无冲突,推到远程仓库
git push

四. 含有git rebase 的提交做法

由于使用到了gerrit有code viewer审核代码,所以不能直接推送到远程的master分支

这里我们推送到gerrit中的/refs/head/master分支
新做法:【文章的第二个版本】【2018-09-29】

- 新来了一个需求
# 创建一个开发分支dev,并切换到相应的分支
git checkout -b dev
# 在dev进行开发
# 开发完毕则使用
git pull --rebase origin master
# 若有冲突,则修改每个文件,修改后并如第三点的1[add]
# 如 xxx.txt 冲突,用编辑器进行修改,add进行添加
vi xxx.txt 
git add xxx.txt
# 若还有冲突
git rebase --continue
# 继续修改冲突并add
# 改完冲突后[也就是没有冲突]
# 将修改推入refs/head/master分支,等待code viewer的审查
git push origin head:refs/head/master
# 审查通过后,回到master分支,更新代码
git checkout master
git pull
# 则可见dev推送的代码

老做法:【文章的第一个版本】【2018-09-27】
如今操作如下

- 新来了一个需求
# 创建一个开发分支dev,并切换到相应的分支
git checkout -b dev
# 在dev进行开发
# 开发完毕则,如第三点中的1[add],2[commit]
# 切换至master分支,代码拉取到最新
git checkout master
git pull
# 切换至dev分支,进行代码衍合
git checkout dev
git rebase master
# 若有冲突,则修改每个文件,修改后并如第三点的1[add]
# 如 xxx.txt 冲突,用vi进行修改,add进行添加
vi xxx.txt 
git add xxx.txt
# 若还有冲突
git rebase --continue
# 继续修改冲突并add
# 改完冲突后[也就是没有冲突]
# 将修改推入refs/head/master分支,等待code viewer的审查
git push origin head:refs/head/master
# 审查通过后,回到master分支,更新代码
git checkout master
git pull
# 则可见dev推送的代码

五. git merge 和 rebase的简单理解

  • 在我看来,git merge操作比较暴力直接合并,若无冲突会生成一条新的commit,有冲突则修改过后进行commit,也统一会生成一条新的commit
  • 对于git rebase的操作不会将分支的点点滴滴推进去,若有冲突,解决后直接提交,不会产生一条新的commit
  • git pull 若有本地的commit,而且有其他人的提交代码,那么会形成一个新的commit,推送的时候包含了自己未推送的commit和合并的commmt
  • git pull --rebase 若有本地的commit,而且有其他人的提交代码,需要通过[git add] [git rebase --continue]来解决问题,从而推送时只会包含自己已经commit的版本

六. 自我总结

  • 不太会写东西,只写到了自己用到的东西,自己用到的方式,可能里面还有很多不足
  • 在用到了这些东西之后,发现确实有点意思
  • 保持学习的态度吧

相关文章

网友评论

    本文标题:gerrit提交代码

    本文链接:https://www.haomeiwen.com/subject/nedeoftx.html