如何使用github给大佬递茶

最近也是闲到没事干(误),开始给开源项目打小黑工贡献代码,当个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,所以需要进行强制修正与提交。好了!现在整洁了,让我们继续开发吧!

最后愿大家在开源的坑里越挖越深路上越走越远!

参考资料

https://blog.csdn.net/zy20120580223/article/details/79618880 https://git-scm.com/book/en/v2/Git-Branching-Rebasing https://blog.csdn.net/chenansic/article/details/44122107

版权声明

本作品由idealclover采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可,转载请注明出处

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玄魂工作室

CTF实战2 Web应用构成

https://www.bilibili.com/video/av22207039/

1102
来自专栏杨建荣的学习笔记

Windows环境下搭建Oracle 12c的体验

昨天准备一个Oracle环境,结果看起来是很简单的事情,却因为各种各样的原因耽搁了一些时间,从下载到安装部署,已经几个小时过去了,抬头看看,已经是凌晨快2点了。...

1230
来自专栏马洪彪

应用系统数据删除与恢复

1192
来自专栏自由而无用的灵魂的碎碎念

老电脑如果从windows7升级到windows10不断重启进不了系统,还是想用windows10,怎么办?

先说一下我的配置:08年的acer aspire 5520g,很老的电脑,除了内存加到4g,其他都不变。官方只支持到windows7,并且官方说明该型号不在官方...

981
来自专栏Jerry的SAP技术分享

最简单的nginx教程 - 如何把一个web应用部署到nginx上

Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第...

2104
来自专栏腾讯Bugly的专栏

《移动端本地 H5 秒开方案探索与实现》

对 APP 里的一些使用 H5 实现的功能模块,一般体验都比原生差,那么怎么提高h5加载速度?优化 h5 体验?

1.3K13
来自专栏JadePeng的技术博客

统一配置中心选型对比

引入配置中心,需要考虑和现有项目的兼容性,以及是否引入额外的第三方组件。我们的java项目以SpringBoot为主,需要重点关注springboot支持性。

1.1K3
来自专栏知晓程序

[好文回顾] 如何引导公众号粉丝进入小程序?

也许你已经知道,微信提供了「小程序关联公众号」的功能,而且小程序还能关联 50 个公众号。

1342
来自专栏Puppeteer学习

基于puppeteer模拟登录抓取页面

在网站分析行业中,网站热图能够很好的反应用户在网站的操作行为,具体分析用户的喜好,对网站进行针对性的优化,一个热图的例子(来源于ptengine)

81010
来自专栏张戈的专栏

BaiduSubmit:度娘WordPress结构化数据插件(改进版)

张戈博客曾多次提到一个会造成百度不收录问题的原因:如果网站存在实时推送机制(比如安装了百度官方推出的 BaiduSubmit 插件),那么发布文章后,在百度收录...

3475

扫码关注云+社区

领取腾讯云代金券