Github 上如何提交 pull request
什么是复刻(forking)?
我们可以通过复刻操作将喜爱的仓库保存自己的Github账户中,以便独立地对其进行操作。
通过复刻,我们可以得到包含完整版本历史的目标仓库的实例,之后可以对复刻得到的仓库进行任意操作而不会影响到原始仓库。
具体操作可以查看我的上一篇文章:Github Fork的使用
什么是拉取请求(pull request)?
拉取请求是为团队项目或开源项目做贡献的一种方式。
例如,一个名为Harry forks的用户复刻了一个属于ThanoshanMV的仓库并对其做了一些变更,Harry可以向ThanoshanMV发起一个拉取请求,不过是否接受取决于ThanoshanMV。这就好像是在说:“ThanoshanMV,你可以拉取我所做的变更吗?”。
为开源项目做贡献
除了编写代码,还有许多其他方式可以为开源项目做贡献。下面介绍一些可选的贡献方式。
唯视锐 公司的骇客入门指南为我们介绍了以下几种为开源项目做贡献的方式:
设计工作:构建整个项目的布局,提升可用性,提升导航和菜单的用户体验,创作项目logo、3D打印和艺术T恤,提供样式指导等。
文档工作:编写、完善或者翻译项目文档,编写项目相关的时事通讯,编写教程,筛选邮件列表中的亮点内容,创建项目使用示例合辑等。
整理工作:链接重复的议题,提议新的议题标签,提议关闭过时的未解决议题,针对近期的议题抛出问题以推动相关讨论。
提供帮助:在议题下解答问题,审查他人提交的代码,为其他贡献者提供指导。
编写代码:协助解决议题中提及的问题,询问是否需要自己提供帮助来增加新的功能特性或改进工具和测试流程。
创建第一个拉取请求!
如果你还不太熟悉 Git 和 GitHub, 请查看 The beginner’s guide to Git & GitHub.
1. 复刻仓库
点击页面顶部的“fork”按钮即可复刻仓库,这将在你的账户中创建此仓库的完整实例。
2. 克隆仓库
现在你的账户中已经包含了这个仓库,将它克隆到本地来进行编辑。
点击“clone”按钮,复制下面的链接。
打开终端并执行如下命令,把仓库克隆到本地。
$ git clone [HTTPS ADDRESS]
现在我们建立了远程仓库的master分支的一个副本。
运行如下命令,进入项目目录:
$ cd [NAME OF REPOSITORY]
3. 创建一个分支
不管是对于小项目还是团队协作的项目,使用仓库时,最好新建一个分支。
分支名称应该保持简短,并且能够反映我们所做的工作。
使用 git checkout 命令来创建一个分支:
$ git checkout -b [Branch Name]
4. 进行更改并提交
对项目进行必要的更改并保存。
执行 git status , 查看变更。
执行 git add 命令,将这些变更加入到刚刚创建的分支:
$ git add .
使用 git commit 提交这些变更:
$ git commit -m "Adding an article to week 02 of articles of the week"
5. 把变更推送到Github
在推送变更之前先确认远程库的名称。
$ git remote
当前仓库对应的远程库名称是“origin”。
确认了远程库的名称之后,可以放心的把变更推送到Github。
git push origin [Branch Name]
6. 创建拉取请求
在Github仓库中可以看到一个“Compare & pull request”按钮,点击它。
请提供必要的说明来介绍你所做的变更(可以使用“#”来引用议题)。提交拉取请求。
恭喜!你已经成功创建了第一个拉取请求。
如果拉取请求被接受的话,你将会收到邮件通知。
7. 同步复刻的master分支
在向原始仓库提交拉取请求之前,必须先将原始仓库的最新内容同步到本地仓库。
即使没打算提交拉取请求也应该及时同步,因为自你复刻仓库之后,原始仓库中的项目可能添加了一些新的功能特性或者修复了一些bug。
按照以下步骤来更新你的master分支:
1.首先查看当前所在分支。
$ git branch
这将列出所有分支,并以绿色来指明当前或活动分支。
2. 切换到master分支。
$ git checkout master
3. 将原始仓库添加为upstream仓库。
为了能够拉取原始仓库的变更到你的复刻仓库中,需要将原始仓库添加为upstream仓库。
$ git remote add upstream [HTTPS]
这里的 [HTTPS] 是你从原始仓库页面复制的URL。
4. 获取原始仓库的变更
从原始仓库获取变更,所有提交到原始仓库的变更将会保存在本地的upstream/master分支中。
$ git fetch upstream
5. 合并变更
将upstream/master分支中的变更合并到本地的master分支,这样就能够做到让本地的master分支与原始仓库保持同步的同时保留本地变更。
$ git merge upstream/master
6. 把变更推送到Github
现在你的本地分支已经与原始仓库的master分支同步了。如果想更新Github仓库,需要把变更推送到Github。
$ git push origin master
注意: 在同步了master分支之后,可以移除upstream仓库。不过以后同步的时候还会用到,所以最好留着它。
$ git remote rm [Remote Name]
7. 删除无用的分支
创建分支是为了完成一些特定目标,目标完成之后,这些分支就没必要继续存在了,可以删除掉。
$ git branch -d [Branch Name]
Github上的无用分支也可以删除。
git push origin --delete [Branch Name]
总结
Github是一个强大的版本历史控制工具,每一个人都可通过发起拉取请求来为开源项目做贡献,而且除了编写代码之外还有许多方式可以做出贡献。
最后要说的是,如果你的拉取请求没有被接受也不要感到困惑,维护者们花费了大量的时间精力来优化项目,他们比我们更加了解整个项目,所以他们知道如何做出合理选择。
相关文章:

Github 上如何提交 pull request
什么是复刻(forking)? 我们可以通过复刻操作将喜爱的仓库保存自己的Github账户中,以便独立地对其进行操作。 通过复刻,我们可以得到包含完整版本历史的目标仓库的实例,之后可以对复刻得到的仓库进行任意操作而不会影响…...

Redis面试知识
概述 Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。 键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。 Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能…...

Spring面试重点(四)——Spring事务
Spring事务 事务的方式 spring中使用事务有两种方式,一种是编程式事务,一种是声明式事务。编程式事务推荐使用TransactionTemplate,实现TransactionCallback接口,需要编码实现;声明式事务只需要在函数增加注解Transa…...
♡ — MySQL 存储引擎
MySQL 存储引擎架构 MySQL 存储引擎采用的是插件式架构,支持多种存储引擎,我们甚至可以为不同的数据库设置不同的存储引擎以适应不同场景的需要;存储引擎是基于表的,而不是数据库。 MyISAM 和 InnoDB 的区别 MySQL 5.5 之前&am…...

大数据技术架构(组件)34——Spark:Spark SQL--Optimize
2.2.3、Optimize2.2.3.1、SQL3.3.1.1、RB1、Join选择在Hadoop中,MR使用DistributedCache来实现mapJoin。即将小文件存放到DistributedCache中,然后分发到各个Task上,并加载到内存中,类似于Map结构,然后借助于Mapper的迭…...

Zookeeper实现分布式锁
文章目录ZK节点类型watch监听机制Zookeeper实现分布式锁锁原理创建锁的过程释放锁的过程ZK锁的种类代码实现Zookeeper是一个开源的分布式协调服务,是一个典型的分布式数据一致性解决方案。 分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅,负载均…...
MFC 添加重新启动管理器支持
重启管理器是添加到 Visual Studio for Windows Vista 或更高版本操作系统的功能 如果发生意外关闭或重启,重新启动管理器将为你的应用程序添加支持。 重新启动管理器的行为取决于应用程序的类型。 如果你的应用程序是文档编辑器,则重新启动管理器让应用…...

一文带你深刻的进入Python,并且了解Python的优缺点
最近几年Python被吹的神乎其神,很多同学都不清楚Python到底能干什么?就盲目去学习Python,今天我就Python的应用领域来简单盘点一下,让想学习Python 的同学找对方向不迷茫。 2. Python 的特点 这里就谈谈自己的看法,首先 Python是…...

别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(4)
别具一格,独此一家,原创唯美浪漫情人节表白专辑 不一样的惊喜哦~!(html5,css3,svg)表白爱心代码(复制就可用)(4) 目录 款式四:时光的记忆款 1、拷贝完整源代码 2、更新时光盒所…...

编译原理—翻译方案、属性栈代码
系列文章戳这里👇 什么是上下文无关文法、最左推导和最右推导如何判断二义文法及消除文法二义性何时需要消除左递归什么是句柄、什么是自上而下、自下而上分析什么是LL(1)、LR(0)、LR(1)文法、LR分析表LR(0)、SLR(1)、LR(1)、LALR(1)文法之间的关系编译原理第三章习…...

链表
一、从尾到头打印链表题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。解题思路:使用栈作为中转,可以实现倒置打印classSolution { public:vector<int> printListFromTailToHead(ListNode* head){//使用栈完成中…...
CSS 样式优先级
CSS 样式优先级决定了最终呈现在浏览器中的样式是哪一组样式,在多组样式中有冲突时,最终呈现在浏览器中的样式是具有最高优先级的样式。 CSS 样式优先级顺序如下: 内联样式 > 内部样式 > 外部样式 !important > 内联样式 > ID…...
SpingMVC获取请求参数
通过ServletAPI获取请求参数将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象。html<form th:action"{/param/servletAPI}" method"post">用户名:<input ty…...

微搭使用笔记(二)微搭低代码平台介绍及基础使用
概述 官网地址: 官网 官方文档: 官方文档 FAQ: FAQ 腾讯云微搭低代码是一个高性能的低代码开发平台,用户可通过拖拽式开发,可视化配置构建 PC Web、H5 和小程序应用。支持打通企业内部数据,轻松实现企业微信管理、工…...

CountDownLatch的定义、使用 、原理
一、定义 CountDownLatch的作用很简单,就是一个或者一组线程在开始执行操作之前,必须要等到其他线程执行完才可以。我们举一个例子来说明,在考试的时候,老师必须要等到所有人交了试卷才可以走。此时老师就相当于等待线程ÿ…...

《Terraform 101 从入门到实践》 Terraform在公有云Azure上的应用
《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。 简介 Azure是微软的公有云,它提供了一些免费的资源,具体可以查看: https:/…...

别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(3)
别具一格,原创唯美浪漫情人节表白专辑, (复制就可用)(html5,css3,svg)表白爱心代码(3) 目录 款式三:心形实时显示认识多长时间桃花飞舞(猫咪)款 1、拷贝完整源代码 2、拷贝完整js代码 3、修改时间 4、…...
Linux 删除修改日期大于某一天的文件
在服务器运维过程中,我们往往会产生大量的日志文件. 如果日志文件命名能看出日志产生的时间,这些文件是很好删除的. 但有时,我们可能有成千上万的没有命名规律日志文件 下面的方法可以根据日志最后修改时间 批量删除这些文件 先给出完整命令: find /mydir -mtime 10 -name &…...
【算法题】1845. 座位预约管理系统
插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 题目: 请你设计一个管理 n 个座位预约的系…...
【专业认知】保研北大金融 / 入职腾讯产品经理
2023.02.11 一. 朱博文学长分享——关于大学生活的一点思考 1. 自我介绍 大数据18级 经济学双学位 保研至北大金融硕士 “多思考、多感受、兼听则明” 2. 大学生活 2.1 为什么要上大学 1:追求美好生活的需要 “美好”难以量化,因为每个人对生活…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...