# 2022年,继续做开源的朋友 原创 精华

zhushangyuan_
发布于 2022-1-31 23:28
浏览
4收藏

2022年,继续做开源的朋友

利用开源软件,和利用并回馈开源社区,档次和境界是不一样的。哈佛商学院教授 Frank Nagle 的一项新研究发现, 回馈开源软件能给自家企业带来更多的竞争优势。通过贡献代码,程序员能更深入的理解系统结构和功能,这能带来巨大的竞争优势,还有助于改善公司形象,有利于招募优秀人才,能增加公司研发效率。当然回馈开源软件对低技术公司意义不大。

本文就说说参与社区贡献的几点注意事项。大家,2022年就可以多参与社区的贡献,我们一起做开源的朋友!

1、 熟悉已有的详细资料

OpenHarmony Docs文档仓、Gitee帮助站点都提供了丰富的资料,介绍如何把开源代码仓Fork到本人的仓库下,如何提交Pull Request来贡献代码。可以通过下述链接了解更多信息:

2、Fork个人仓里创建分支

把开源仓代码fork到个人仓后,就可以把代码下载到本地工作机器上进行开发了。通常建议,创建不同的分支来解决不同的issue或特性开发。如果没有创建分支,直接在master分支上进行开发,并提交Pull Request后,由于Committer代码审核者需要时间来审核代码,在这个期间,我们是无法提交PR代码解决其他问题的。如果有不同的分支,则可以使用不同的分支来提交PR同时解决不同的问题。界面上创建分支如下图所示:

# 2022年,继续做开源的朋友-鸿蒙开发者社区

现在Gitee已经支持了可以多次fork代码仓到本人仓,如下图所示。但是使用不同的分支,依旧是效率更优的工作方式。

# 2022年,继续做开源的朋友-鸿蒙开发者社区

3、更新Fork个人仓代码

当其他开发者提交的PR被Committer合入后,我们之前Fork到本人仓的代码就与最新代码不同步了。可以界面上操作,如下图所示。但是,如果存在未合入的PR,这种界面上刷新是不允许的。

# 2022年,继续做开源的朋友-鸿蒙开发者社区

另外,界面上的操作没有办法刷新创建的其他分支的代码,可以使用git命令行来更新代码。如下所示,⑴处的命令行查看远程分支,⑵处增加远程分支,然后可以执行⑶来拉取远程分支代码,远程master分支的代码合并到本地当前分支。其中-r选择等于–rebase,属于变基操作,可以自行搜索rebase查询更多的信息。这些命令的输出,如下图所示。

⑴    git remote -v
⑵    git remote add remote_origin --mirror=fetch https://gitee.com/openharmony/kernel_liteos_m.git
⑶    git pull -r remote_origin master

# 2022年,继续做开源的朋友-鸿蒙开发者社区

4、学会解决冲突

我们提交PR的时候,代码是最新的,随着其他开发者提交的PR的合入,可能存在冲突,导致我们的PR存在冲突,如下图所示。这一般是因为自己的本地做的提交和服务器上的提交有差异,并且这些差异中的文件改动,Git不能自动合并,那么就需要用户手动进行合并。

# 2022年,继续做开源的朋友-鸿蒙开发者社区

怎么来解决冲突?需要参考上面的小节来更新Fork个人仓代码,由于存在冲突,更新会失败,更新后解决冲突,重新提交即可。下面介绍下步骤。当执行⑴处变基rebase更新代码因冲突失败时,会提示哪些文件存在冲突。⑵处查看本地更改,然后根据本地代码和最新代码的冲突的实际情况,修复冲突。如⑶的例子,BUILD.gn文件存在冲突,编辑解决冲突。然后使用git add 添加到更改。解决完毕冲突后,执行⑷继续应用补丁。最后重新推送代码即可,注意需要使用-f表示强制推送。

   git remote -v
   git remote add remote_origin --mirror=fetch https://gitee.com/openharmony/kernel_liteos_m.git
⑴  git pull -r remote_origin master
⑵  git status
⑶  vi testsuits/sample/kernel/mem/BUILD.gn
   git add testsuits/sample/kernel/mem/BUILD.gn
⑷  git rebase --continue

⑸  git push origin XXX:XXX -f

关于如何处理代码冲突,也可以参考Gitee帮助站点如何处理代码冲突了解更多信息。

5、追加amend提交

通常一个PR只能用于解决一个单一的问题,只需要提交一个git commit。如果需要解决多个问题,需要提交多个PR。经常由于提交的代码由于需要再次修改,导致一个PR包含多个git commit,如下图所示。这样不规范的提交会导致git log提交日志信息非常多,后续查看提交修改时,非常不方便。

# 2022年,继续做开源的朋友-鸿蒙开发者社区

解决这个问题的方式就是提交代码时,使用amend追加方法。本地再次修改后,执行⑴git commit提交时,注意需要添加–amend选项,此时会弹出窗口让修改git message信息。⑵处提交追加的代码,注意需要添加-f选项强制提交。

⑴  git commit --amend
⑵  git push origin XXX:XXX -f

关于如何追加提交,也可以参考Gitee帮助站点修改最后一次提交了解更多信息。

6、cherry-pick提交

当合入一个PullRequest之后,有时我们想要把这个PullRequest上一个或者多个提交重新拿出来提交为一个新的PullRequest,然后合并到新的目标分支。这时就可以使用Cherry Pick 功能。关于cherry-pick提交,可以参考Gitee帮助站点cherry-pick提交了解更多信息。

7、Git message规范

需要注意git message规范,可以参考Git Commit message 编写指南

小结

因为时间的关系,以后逐渐补充吧,有啥问题随时留言给我。谢谢。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-2-24 11:58:45修改
4
收藏 4
回复
举报
7条回复
按时间正序
/
按时间倒序
mb609898e2cfb86
mb609898e2cfb86

小脑斧挺可爱的

回复
2022-2-1 09:46:44
zhushangyuan_
zhushangyuan_ 回复了 mb609898e2cfb86
小脑斧挺可爱的

有點憂桑

回复
2022-2-1 11:05:08
zhushangyuan_
zhushangyuan_

希望 2022年 会有更多的开源爱好者,携手向未来。。。

回复
2022-2-6 11:06:38
zhushangyuan_
zhushangyuan_

修改原文去掉题记和老虎:

![08cf508ea1df4ff3d2ae93203050ed3.jpg](https://dl-harmonyos.51cto.com/images/202201/98d0b13932d2e3ac84d0989aed567f61d9c1bb.jpg?x-oss-process=image/resize,w_820,h_1138)

 

现在是除夕夜,是个特别,特别又特别的日子。除夕夜的大小朋友们外面喧闹着,关紧窗户也抵诱不住喧闹的穿透力。新冠疫情形式渐好,城市管理水平之高,每每让人感动。疫情的影响,究竟是无法与家人团聚,只能一个人异地过年了。朋友圈各种晒年夜饭,疫情期间也要快乐过年,各位朋友新年快乐!我除夕夜没有晚饭,午饭时化身了骆驼,现在一点儿也不饿(,也没有凄凉的感觉)。这样特别的时刻,2022年1月31日,农历壬寅年除夕夜,我想写一些如何参与社区开源贡献的文字,这样的经历,一辈子都不会忘记吧。 ---- 题记
已于2022-2-7 15:21:54修改
1
回复
2022-2-7 15:19:55
51小官
51小官

2022年,继续做开源的朋友,也期待越来越多的开发者加入到回馈开源社区行列中

1
回复
2022-2-7 15:59:12
zhushangyuan_
zhushangyuan_ 回复了 51小官
2022年,继续做开源的朋友,也期待越来越多的开发者加入到回馈开源社区行列中

技术社区贡献文章,OpenHarmony社区贡献代码。。。

1
回复
2022-2-24 14:17:55
zhushangyuan_
zhushangyuan_

出续篇了 https://harmonyos.51cto.com/posts/10612

回复
2022-3-4 12:02:49
回复
    相关推荐