给开源项目贡献代码
  5To79pCamVad 2023年11月02日 37 0


如何给开源项目贡献自己的代码?这里以一次真实的给阿里巴巴的分布式事务框架seata提PR为例。

1.自己的项目拉取到本地

首先fork目标项目,这里是阿里的seata,fork到自己的仓库后,将项目拉取到本地。

$ git clone git@github.com:lightClouds917/seata.git
Cloning into 'seata'...
remote: Enumerating objects: 55, done.
remote: Counting objects: 100% (55/55), done.
remote: Compressing objects: 100% (37/37), done.
remote: Total 14692 (delta 12), reused 30 (delta 4), pack-reused 14637
Receiving objects: 100% (14692/14692), 2.65 MiB | 1.52 MiB/s, done.
Resolving deltas: 100% (6070/6070), done.
Checking connectivity... done.
Checking out files: 100% (960/960), done.

这里需要注意,设置自己的账号和邮箱!

git config user.name "IT云清"
git config user.email "118xxxxxx@qq.com"

2.关联上游项目

这里的upstream,名称自己定义,为了通俗易懂,建议也以此命名。

G:\mylearn\seata>git remote add upstream git@github.com:seata/seata.git

G:\mylearn\seata>git remote -v
//本地地址
origin git@github.com:lightClouds917/seata.git (fetch)
origin git@github.com:lightClouds917/seata.git (push)
//上游地址
upstream git@github.com:seata/seata.git (fetch)
upstream git@github.com:seata/seata.git (push)

(移除上游分支命令:git remote rm upstream)

3.同步上游代码

防止你操作的过程中,上游有人提交变更了代码,我们再次同步下上游最新的代码。

G:\mylearn\seata>git branch
* develop

G:\mylearn\seata>git pull upstream develop
From github.com:seata/seata
* branch develop -> FETCH_HEAD
* [new branch] develop -> upstream/develop
Already up-to-date.

4.提交本地修改

本地代码修改后,就该提交了。

G:\mylearn\seata>git add .

G:\mylearn\seata>git status
On branch develop
Your branch is up-to-date with 'origin/develop'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

modified: core/src/main/java/io/seata/core/rpc/netty/NettyClientChannelManager.java


G:\mylearn\seata>git commit -am "NettyClientChannelManager#getExistAliveChannel() check null channel"
[develop 98ea0d4] NettyClientChannelManager#getExistAliveChannel() check null channel
1 file changed, 1 insertion(+), 1 deletion(-)

G:\mylearn\seata>git push
Counting objects: 12, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (12/12), 894 bytes | 0 bytes/s, done.
Total 12 (delta 6), reused 0 (delta 0)
remote: Resolving deltas: 100% (6/6), completed with 6 local objects.
To github.com:lightClouds917/seata.git
df7772a..98ea0d4 develop -> develop

G:\mylearn\seata>

5.提PR

给开源项目贡献代码_github


这里可以看红框这里,就是我们刚提交到自己仓库的代码,上方有一个new pull request.点击这个按钮。

给开源项目贡献代码_git_02


这时候跳到了上游仓库,会比对出两个仓库的区别,你修改的东西,如果没有问题,那点击绿色的Create pull request.

给开源项目贡献代码_开源_03


会让你填写一些内容,比如这个pr做了什么,是否测试等,建议按照官方的都补充一下。然后点击右下方绿色按钮。

给开源项目贡献代码_开源_04


然后,你就安静的等待seata那边的具有权限的开发者去审核和通过吧。

6.多分支并行开发

可能你在做pr1时,还没做完,又需要提交另外一个pr2,这时候,可以按照下面的方式,再拉一个开发分支。

1.从上游 dev分支拉取新的dev-01分支;

git checkout -b dev-01 upstream/dev

2.修改本地代码

git commit -am “add:add test dev-01”

3.再次拉取下上游代码,防止有人提交了造成冲突

git pull upstream dev

4.将本地修改的代码推送到新的分支,并关联上游分支

git push -u origin dev-01


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  9E2BTpjt8nym   2023年12月06日   37   0   0 WindowsgitCentOS
5To79pCamVad