【开源社区】如何提交你的Pull Request

1、摘要

github上有很多优秀的开源项目,很多时候我们不仅仅只是满足于使用,同时也想一起参与开源项目的开发,贡献自己的代码。今天这篇文章就给大家介绍一下如何在 github 上提交 PR,让我们一起为开源社区做贡献。


2、fork主仓库项目到个人仓库

github上找到你想要参与的开源项目,然后点击右上角的fork 按钮,就会在你自己的代码仓库中创建一个此开源项目的副本,后续所有代码提交都提交到你自己的仓库,这样就不必担心未经审核的代码弄乱了原始仓库。

img

完成了fork步骤后,会在自己的代码仓库中创建一个你想参与的开源项目的副本。

img


3、克隆新仓库到本地

执行gitclone 命令,推荐使用https的形式。

1
git clone https://github.com/zhuangxiaoyan512/data.git

执行gitclone 命令,不推荐使用ssh的形式。

1
git clone git@github.com/zhuangxiaoyan512/data.git

4、关联远端仓库

1
2
3
4
5
6
7
8
# 进入到项目中,在有 .git 文件的目录下连接到远端仓库地址
git remote add upstream https://github.com/zhuangxiaoyan512/data.git(主仓库的URL)

# 禁止向远端主仓库进行代码提交
git remote set-url --push upstream no_push

# 查看本地关联的代码库
git remote -v

5、创建自己的branch

1
2
3
4
5
6
7
8
#checkout你的开发分支
git checkout vxrail-cr

#在vxrail-cr分支上建立自己的分支的
git checkout -b topic/jiale_xiong/data/vxp568

#查看的当时分支是否你自己的分支
git branch

img


6、修改文件后提交

1
2
3
4
5
6
7
8
9
10
11
#查看那些文件修改了
git status

#提交好修改的文件大本地仓库
git add filename1 filename2

#提交comit 信息(这个是作为代码提交的检查的 符合你们公司的开发规范)
git commit --amend (git commit -m "公司的规范")

#推送到本地同时提交PR
git push -f origin topic/jiale_xiong/data/vxp568(本地分支):vxrail-cr(个人远端分支)

img


7、个人仓库中提交PR

img

img

到这里整个流程就结束了,下面就是耐心等待matainer的审核即可。

img


8、当PR有冲突时候

1
2
# 拉取远端主仓库 拉取最新的代码到本地
git fetch upstream

img


9、进行代码rebase

1
2
3
4
5
6
7
8
9
10
11
12
13
git rebase vxrail-cr(本地的分支) 就是将vxrail-cr(已经是最新的)合并到你当下分支(topic/jiale_xiong/data/vxp568)

#这个时候就会出现有conflict问题

******************************

#查看有哪些文件有冲突

git diff

#解决好冲突

******************************

img


10、再重新提交PR

1
2
3
4
5
6
7
8
#重新提交刚刚解决冲突的文件
git add filename1 filename2

#提交commit 信息 记得这几是需要需改符合你公司的要求或者是开源社区的要求
git commit --amend

#推送到本地同时提交PR
git push -f origin topic/jiale_xiong/data/vxp568(本地分支):vxrail-cr(个人远端分支)

img


11、删除无用的分支

创建分支是为了完成一些特定目标,目标完成之后,这些分支就没必要继续存在了,可以删除。

1
git branch -d [Branch Name]

github上的无用分支也可以删除

1
git push origin --delete [Branch Name]

12、pull request命令集合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#首先fork公司和开源代码仓库
git fork https://github.com/zhuangxiaoyan512/data.git(主仓库的URL)

#在将你的个人远端仓库的clone到你的本地
git clone git@github.com:2462612540/data.git(个人仓库URL)

#进入到项目中,在有.git文件的目录下 连接到远端仓库地址
git remote add upstream https://github.com/zhuangxiaoyan512/data.git(主仓库的URL)

#禁止向远端主仓库进行的代码提交
git remote set-url --push upstream no_push

#查看本地关联的代码库
git remote -v

#checkout你的开发分支
git checkout vxrail-cr

#在vxrail-cr分支上建立自己的分支的
git checkout -b topic/jiale_xiong/data/vxp568

#查看的当时分支是否你自己的分支
git branch

#然后在进行的你开发

*****************

#查看那些文件修改了
git status

#提交好修改的文件大本地仓库
git add filename1 filename2

#提交comit 信息(这个是作为代码提交的检查的 符合你们公司的开发规范)
git commit --amend (git commit -m "公司的规范")

#推送到本地同时提交PR
git push -f origin topic/jiale_xiong/data/vxp568(本地分支):vxrail-cr(个人远端分支)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 拉取远端主仓库
git fetch upstream

#进行合并操作(可以使用rebase 和merege两种操作)此时你在topic/jiale_xiong/data/vxp568下将需要rebase或者是merege的分支
git rebase vxrail-cr(本地的分支) 就是将vxrail-cr(已经是最新的)合并到你当下分支(topic/jiale_xiong/data/vxp568)

#这个时候就会出现有conflict问题
******************************

#查看有哪些文件有冲突

git diff

#解决好冲突

******************************

#重新提交刚刚解决冲突的文件
git add filename1 filename2

#提交commit 信息 记得这几是需要需改符合你公司的要求或者是开源社区的要求
git commit --amend

#推送到本地同时提交PR
git push -f origin topic/jiale_xiong/data/vxp568(本地分支):vxrail-cr(个人远端分支)