最近也是闲到没事干(误),开端给开源项目打小黑工贡献代码,当个dalao手底下的端茶党。
可是看来端茶党也不是那么简单做的或许仅仅傻翠他智商太低跟不上,在打小黑工的时分遇到了各式各样的费事,下面大概记载一下,不知道以后有没有人能用得上。
fork, clone与修正
首先咱们要做的便是fork别人的项目。这个没什么好说的,在GitHub的项目主页上大大的fork键,放心点击便是了。这样做的意图是将项目“复制”一份到自己的空间中,便于下一步的clone与修正。
之后咱们会发现在咱们自己的库房中多了一个该项意图副本,将该项目clone到本地,最快捷的方法便是运用GitHub的桌面应用程序进行操作。进入File -> Clone repository,找到项目,挑选途径便能够进行克隆,这样项意图文件便被复制到了自己本地的电脑里。
之后纵情地瞎jb~~ 修正叭~~
改动的提交
假定咱们现在已经修正好啦,或者是debug成功并增加了新的bug,或者是增加了新的feature并增加了一些bug,看似功德圆满但还有很长的一段路要走——提交咱们的修正。改动的提交分为以下几个阶段:本地的提交,本地到远程库房的提交与远程库房到项意图提交。
本地的提交
首先是本地的提交,关于git,在本地的文件做了修正时分,咱们需要将修正同步到git中,所运用的命令一般是这样的:
git add -A //这儿指将全部的修正记载 git commit -m “日志内容” //这儿是将修正进行打包并打上日志
这样,在咱们的电脑中git就完成了更新。
提交到远程库房
之后咱们要将自己git上的更新同步到GitHub上,这时咱们的命令如下:
git push
可是有或许呈现以下错误(比方傻翠就呈现了XD):
fatal: HttpRequestException encountered.
呈现的原因是Github 禁用了TLS v1.0 and v1.1,必须更新Windows的git凭证管理器,反正点击这儿下载安装便是了。
之后提交就会被上传至远程库房啦~看GitHub中自己fork的项目,应该能够看到相应的更改了。
提交到项目
提交到项意图时分咱们需要通过PR(pull request)进行。找到项目主页中的Pull Requests,猛击New Pull Request,之后GitHub会自动对比自己fork的分支和主分支的不同,之后写好标题和更新的内容,提交吧!
与主分支同步更新
其实这一块才是自己写这篇文章的最重要原因。现在自己进行过一次提交了,可是之后假如想持续同步主分支的更改并在此根底上再次开发的时分该怎么办呢?平常时分自己的做法也便是删掉之前自己clone的repository从头进行一次clone,可是emmm多少有点感觉上过不去,于是想折腾折腾看看到底该怎么办。
本来自己的主意是能够从别人的主分支上反merge(pull request)到自己的分支,但这样做的后果是:自己提交后再pull request回去时会有一次额外的commit记载,非常影响主分支的状况。
能够看到关于项目来说,假如进行merge再开发并pull request回去,一些改动(如图中C3)就被污染了,而这关于开发来讲是晦气的。那么如安在不删去从头fork的状况下持续开发呢?通过查找之后发现了一种叫做git rebase的操作,好像很合适这样的状况。
能够看到,通过git rebase后,代码仍旧维持着原有的树结构,自己的提交与修正是建立在原有新增修正根底之上的,能够维持项意图整齐。
那么具体要怎么做呢,就让咱们开端吧。首先咱们要理解关于这样的项目来说,一般git会有两个分支:master分支是咱们fork出的分支,也便是咱们在修正的分支;upstream分支是该项意图主分支,也便是咱们要提交的分支。现在咱们要更新咱们的分支,也行将master分支rebase到upstream分支上。
git fetch upstream git checkout master git rebase –onto upstream/master git push –force
之所以加 –force参数,是因为该push本质上修正了git的历史commit,所以需要进行强制修正与提交。好了!现在整齐了,让咱们持续开发吧!
最终愿大家在开源的坑里越挖越深路上越走越远!
参考资料
blog.csdn.net/zy201205802… git-scm.com/book/en/v2/… blog.csdn.net/chenansic/a…