专栏首页idealclover的填坑日常如何使用github给大佬递茶

如何使用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 条评论
登录 后参与评论

相关文章

  • 从零开始折腾博客(3):一键安装脚本LAMP.sh搭建Wordpress站点

    LAMP:Linux+Nginx+MySQL+PHP,为动态网站的搭建提供了一系列的平台支持。

    idealclover
  • 删除 Git/GitHub 中的敏感数据

    今天整理之前的 GitHub 项目,发现自己的一个项目不小心把服务器密钥暴露出来了。幸好是个 private 的库。就着手准备把这个文件删除。

    idealclover
  • 记录一次简单的博客升级w

    从过年开始一直被闷在家里,少了出门和小伙伴耍的快落~每天在家里就是对着电脑忙各种事情(指摸鱼),于是总想着找点事情做做,正好看自己的小博客也不太顺眼了就想着升一...

    idealclover
  • Git学习01-Learn Git Branching(在线学习工具)

    网址:https://learngitbranching.js.org/?locale=zh_CN

    帅的一麻皮
  • Git Pro深入浅出(一)

    什么是“版本控制”?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 版本控制系统(VCS)应用而生。有了它你就可以将某个文...

    奋飛
  • 7.1 Git 工具 - 选择修订版本

    现在,你已经学习了管理或者维护 Git 仓库、实现代码控制所需的大多数日常命令和工作流程。 你已经尝试了跟踪和提交文件的基本操作,并且发挥了暂存区和轻量级的分...

    shaonbean
  • 小姐姐用动画图解Git命令,一看就懂!

    无论是开发、运维,还是测试,大家都知道Git在日常工作中的地位。所以,也是大家的必学、必备技能之一。之前公众号也发过很多git相关的文章:

    民工哥
  • 可能每天都会用到的Git命令速查表

    老实说,莱纳斯·托瓦尔兹(Linus Torvalds)的小项目几乎感觉像是一个奇迹。

    王小婷
  • 为什么互联网巨头们纷纷使用Git而放弃SVN?(内含Git核心命令与原理总结)

    作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了...

    冰河
  • Git基础知识(六)

    因为是主线上的bug,所以先切回到主线上去,不过本地的主线可能有点旧了,所以把本地的master分支删掉,然后和远端同步一下之后再从远端把master分支检出

    zx钟

扫码关注云+社区

领取腾讯云代金券