gerrit提交代码
【天下无难事,只要肯放弃】【都是自己理解的有误请指出】...................
一. 为什么写这篇文章
如果只看内容,请跳过这一节
原因主要有以下几个:
- 公司用到了,需要了解一下
- 一直对git rebase合并和git merge的合并简单学一下
- 任性,写一下
二. 过程
由于我的东西都是我自己的理解,怎么使用是按照在公司的使用方式
希望理解不足的还请大家指出
接下来,我将用以下几个点去讲
- 含有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的版本
六. 自我总结
- 不太会写东西,只写到了自己用到的东西,自己用到的方式,可能里面还有很多不足
- 在用到了这些东西之后,发现确实有点意思
- 保持学习的态度吧
网友评论