git开发常用操作【百度实习实际经历】

本人在百度实习了一个月,参与了开源深度学习框架paddlepaddle的开发,虽然没有写啥实际的代码,但是还是修改了一些小地方,并且提交到了github上,学到了一些github的实际使用,在此记录一下。

开发流程

1.fork代码

在自己修改github上的东西之前,首先要把代码fork到自己的仓库。

点击右上角的fork,在自己的github里就会创建一个同名的仓库。

然后点击clone or download,复制仓库的url,在本地使用git clone URL就可以把代码下到自己的电脑上了。

2.创建自己的分支

公司实际的项目,一般会有release和develop两种分支,release分支用于提交正式版本,比如paddlepaddle最近刚刚发布release1.5,所以会有一个release1.5分支,如果release分支有什么bug,研发人员后续会在该分支进行修改和提交,但是新的功能就不会加入已经发布的版本分支了,而是放到develop分支,等过了一段时间,加入了足够多的新功能,有必要再发布一个新版本了,就会创建一个新的release1.6分支。

当我们把代码clone下来以后,一般都是先checkout到develop分支

git checkout develop

然后,创建一个新的分支,名字可以根据对代码做的修改而定,比如要增加新功能,就可以命名为add_feature

git checkout -b add_feature

这时,就可以对代码进行修改了。

3.提交代码

代码修改完成之后,如果可以通过自己的测试,就可以提交了。

git add .

git commit -m'

title

change file1

change file2'

这里commit的message用到了一种多行的语法,因为在公司的实际提交时,需要对修改做一个比较详细的描述,一般格式是第一行是标题,概括一下修改的功能,后面逐行描述修改的每一个文件具体修改了什么。

提交之后,就是推送到自己的仓库了。

推送之前,首先要把自己修改代码的这段时间里,别人修改过并且已经合入到github里的代码拉下来,跟自己的代码做一个合并。

git remote add upstream 原仓库URL

git fetch upstream 

git pull upstream develop

这里首先将原仓库添加到remote里,原仓库就是fork之前的那个原本的仓库,然后就是拉取原仓库的代码,如果修改代码期间有其他人提交了代码,这些代码就会在这时候被拉下来并与自己当前的代码进行合并,注意,这时是有可能产生冲突的,如果有冲突,最好自己先解决,否则提交之后冲突会在github上显示出来。

跟最新的代码合并之后,就可以推送自己的代码了,这里注意,要先提交到自己的仓库。

git push origin 自己的分支名

提交之后,到自己的github上就能看到自己提交的这个新的分支了(我提交的分支叫blog,专门为写这篇博客建的分支)。

将新的分支提交到自己的仓库之后,自己的仓库界面会出现一个这样的提示。

提交会告诉你提交了一个新的分支,这时就可以点击右侧的compare&pull request,创建一个新的拉请求(公司里就简称PR),这个PR提交之后,原仓库的pull request下面就会出现你这次提交的分支。

这时公司就会审核你的代码,如果可以,就会合入(merge)到develop分支里,这里审核一般会包括机器审核和人工审核两步,机器审核在百度里叫CI(continuous integrate,持续集成),目的是确保你提交的代码对以前的功能不会造成影响,机器可能会建立一个docker然后在里面执行测试脚本,如果通过所有测试,就可以进行人工审核(review)了,人工审核就是公司的其他人看一遍你的代码,有没有问题,写的是否规范这样的,如果审核的人觉得可以就会给你打分,分数够了就可以merge到develop分支了。

但是到这还没有结束,有的时候,你的代码修改是为了修改一个bug,这个bug不能只在develop分支,而是要合入到正式版本的分支里,这时候,就要把在develop分支提交成功的代码再提交一次到release分支。

首先,在本地checkout到你要提交的正式版本那个分支。

git checkout release/1.5

然后,同样更新一下代码,保持跟原仓库release分支的同步。

同步之后就可以提交了,注意这时不使用commit命令,而是cherry-pick命令。

git cherry-pick commit-id

这里commit-id填写之前提交修改的那次提交的id,可以在github查看。

在github原仓库首页点击commit,会跳转到提交历史界面,找到自己的那次提交,复制右侧的commit-id到cherry-pick命令里即可。

提交之后回到自己的github仓库,又会出现一个新的PR提交提示,然后按照刚才develop分支的方法,先提交,然后CI&review,最后merge,修改的代码就合入到release分支了。

到这里,这次代码修改就算圆满完成了。

发布了17 篇原创文章 · 获赞 22 · 访问量 3040

猜你喜欢

转载自blog.csdn.net/u013536232/article/details/96033815