# 2022年,继续做开源的朋友 原创 精华
2022年,继续做开源的朋友
利用开源软件,和利用并回馈开源社区,档次和境界是不一样的。哈佛商学院教授 Frank Nagle 的一项新研究发现, 回馈开源软件能给自家企业带来更多的竞争优势。通过贡献代码,程序员能更深入的理解系统结构和功能,这能带来巨大的竞争优势,还有助于改善公司形象,有利于招募优秀人才,能增加公司研发效率。当然回馈开源软件对低技术公司意义不大。
本文就说说参与社区贡献的几点注意事项。大家,2022年就可以多参与社区的贡献,我们一起做开源的朋友!
1、 熟悉已有的详细资料
OpenHarmony Docs文档仓、Gitee帮助站点都提供了丰富的资料,介绍如何把开源代码仓Fork到本人的仓库下,如何提交Pull Request来贡献代码。可以通过下述链接了解更多信息:
2、Fork个人仓里创建分支
把开源仓代码fork到个人仓后,就可以把代码下载到本地工作机器上进行开发了。通常建议,创建不同的分支来解决不同的issue或特性开发。如果没有创建分支,直接在master分支上进行开发,并提交Pull Request后,由于Committer代码审核者需要时间来审核代码,在这个期间,我们是无法提交PR代码解决其他问题的。如果有不同的分支,则可以使用不同的分支来提交PR同时解决不同的问题。界面上创建分支如下图所示:
现在Gitee已经支持了可以多次fork代码仓到本人仓,如下图所示。但是使用不同的分支,依旧是效率更优的工作方式。
3、更新Fork个人仓代码
当其他开发者提交的PR被Committer合入后,我们之前Fork到本人仓的代码就与最新代码不同步了。可以界面上操作,如下图所示。但是,如果存在未合入的PR,这种界面上刷新是不允许的。
另外,界面上的操作没有办法刷新创建的其他分支的代码,可以使用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
4、学会解决冲突
我们提交PR的时候,代码是最新的,随着其他开发者提交的PR的合入,可能存在冲突,导致我们的PR存在冲突,如下图所示。这一般是因为自己的本地做的提交和服务器上的提交有差异,并且这些差异中的文件改动,Git不能自动合并,那么就需要用户手动进行合并。
怎么来解决冲突?需要参考上面的小节来更新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提交日志信息非常多,后续查看提交修改时,非常不方便。
解决这个问题的方式就是提交代码时,使用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年 会有更多的开源爱好者,携手向未来。。。
修改原文去掉题记和老虎:
![08cf508ea1df4ff3d2ae93203050ed3.jpg](https://dl-harmonyos.51cto.com/images/202201/98d0b13932d2e3ac84d0989aed567f61d9c1bb.jpg?x-oss-process=image/resize,w_820,h_1138)
2022年,继续做开源的朋友,也期待越来越多的开发者加入到回馈开源社区行列中
技术社区贡献文章,OpenHarmony社区贡献代码。。。
出续篇了 https://harmonyos.51cto.com/posts/10612