如何在GitHub上大显身手?

2023-11-19

码农朋友们都知道,gitHub是一个面向开源及私有软件项目的托管平台,上面托管了众多的优秀的项目,比如linux内核源码、git源码、机器学习框架tensorflow等等。当然,除了这些顶尖项目外,还有海量的高手开发的优秀项目。所有的这些项目,我们都可以为它贡献代码。

那么,要如何为这些项目贡献代码呢?我们下面以实例来讲解。

比如说,现在gitHub上有个很牛逼的项目githubTest,它的作者是Alvin,项目地址如下:

https://github.com/yychuyu/githubTest

现在Harry看到了这个项目,想要对它进行贡献代码。想要达到这个目的,Harry要完成下图的这些步骤:

1. fork

Harry在找到这个项目之后,点击右上角的「fork」按钮。稍等片刻后,就会在Harry的账号下克隆了一个一样的项目githubTest,包括文件,提交历史,issues,和其余一些东西。

2. clone

通过fork之后,Harry的账号下也有了githubTest这个项目,但还不能对它进行编译、修改(其实是可以修改,但是不建议)。

这时,可以通过git clone命令,将这个项目clone到自己的电脑里。

3. update a file & 4. commit

接下来,Harry就可以大显身手了,可以自由对这个项目进行修改。但是,不建议在master分支直接修改,建议在master分支基础上切出一个dev分支,然后在dev分支上自由发挥。修改完之后,再将dev分支merge到master分支。

5. push

在自己的电脑上修改好代码之后,再使用git push命令将改动同步到自己的gitHub项目仓库里。

通过这个操作后,就可以在代码仓库里看到自己的提交了。

6. pull request

接下来,就是向原作者Alvin提交你的代码了。首先点击文件列表上的「New pull request」。

之后,gitHub会自动对源仓库分支及自己仓库分支代码进行比对,看看是否有冲突。如果它显示「Able to merge」的话,Harry就可以点击下面的「Create pull request」绿色按钮,进行代码提交。

再之后,系统会要求你写一段注释,其实也可不写。但最好写一下,跟作者说明一下你改动了什么,为啥这么改。

通过以上6步,原作者Alvin就会收到一个pull request,如下图:

然后,Alvin可以点进去,看看Harry具体提交了一些什么修改。如果他觉得这个修改确实够niubility的话,它就可以点击「merge pull request」,将Harry的提交集成到自己的项目里。

至此,功德圆满,Harry顺利完成一次对项目githubTest的代码贡献。

但是,这个项目实在太出众了,很多高手看到了并贡献了众多代码。比如现在Alvin自己提交了一个文件:

现在原作者项目已经发生了改变,那Harry账号下的githubTest如何与原作者Alvin的项目保持同步呢?Harry需要做以下三步操作:

1. fetch

现在代码不同步了,我们要先把Alvin仓库的代码fetch到自己电脑的仓库下。注意,这是在自己电脑上操作,不是在github上操作。

git fetch git@github.com:yychuyu/githubTest.git master:latest

上面这条命令,git fetch 之后 的那部分,是原作者Alvin项目git地址,通过点击原项目「clone or download」按钮可以看到。再之后master:latest这部分,master是原项目分支,latest是自己项目分支。如果latest分支不存在的话,将自动创建。其实也可以将代码fetch到自己的master分支,但也不建议这么做。

2. merge

代码fetch到latest分支之后,再切到master分支,再使用git merge命令将最新代码合并到master分支。

3. push

现在,Harry电脑上的代码与原项目代码保持同步了。我们再使用git push命令,就可以将最新代码推到Harry账号下githubTest项目里

以上的三个步骤具体操作过程如下图示。

接下来,Harry就可以在此基础上,继续贡献自己的代码了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在GitHub上大显身手? 的相关文章

  • 是否可以检测 http git 远程是智能还是愚蠢?

    我正在我的应用程序中实现一个选项来使用 depth 1制作 git repo 的最小功能克隆 我刚刚意识到愚蠢的 http 传输不支持 depth 我想自动检测 http 远程是愚蠢的还是聪明的 这样我就可以省略 depth与哑 http
  • 具有单个子模块的多个存储库

    我已经找了一段时间但没有找到答案 也许我不知道该看什么 我们有一个主库 它本身就是一个存储库 我们称之为 Lib 它包含我们的大部分模块和子模块 我们还假设它的大小为 2GB 现在我们有很多项目 例如 ProjA ProjB ProjC 每
  • GIT:提交时“致命:无法写入 new_index 文件”

    当我尝试将更改提交到本地存储库时 我收到以下消息 致命 无法写入 new index 文件 As this 线程说明 http luhman org blog 2010 04 05 git fatal unable write newind
  • 如何自动将清单添加到新的 github PR 中?

    创建 Github 拉取请求时 如果能自动将 代码审查 清单添加到 PR 中 那就太好了 然后 PR 提交者可以填写此内容 审核者将能够看到提交者在发送审核之前已经完成了他应该做的事情 这有可能吗 最好的解决方案是在创建 PR 时自动显示清
  • 如何诊断和修复 git fatal: 无法读取树

    我在用着git管理项目上的文件 并不断遇到这个问题 当我跑步时git status我收到消息 fatal unable to read tree e2d920161d41631066945a3cbcd1b043de919570 据我了解 我
  • 使用Git记录文件复制操作

    当我使用 git mv 在 git 中移动文件时 状态显示该文件已被重命名 即使我更改了某些部分 它仍然被认为几乎是相同的东西 这很好 因为它让我可以跟踪它的历史记录 当我复制文件时 原始文件有一些历史记录 我想将其与新副本关联起来 我尝试
  • Git:如何正确合并两个功能完全不同的分支?

    想象一下这样一种情况 同一个项目有两个分支 第一个分支的一部分对另一个分支进行了大幅重构 但有一段时间 您需要保持两个分支的功能 因此您需要对两个分支进行错误修复和关键功能添加 有时是以不对称的方式 在某些时候 您必须将重构的分支合并到原始
  • 是否可以使用 GitHub Action 和 GitHub FTP Deploy 将 Laravel Web 应用程序部署到共享托管?

    是否可以deploy the Laravel网络应用程序到共享主机使用 GitHub Action 和 GitHub FTP 部署 如果可能的话我应该如何更改 github workflows master yml on push bran
  • Git checkout 不会丢弃我的更改

    我在 Windows XP 上使用 git 1 7 1 和 cygwin 这个问题可以通过例子得到最好的说明 git status On branch master Changed but not updated use git add
  • Git 认为我每次进行小更改时都在重写我的一个文件

    我有一个中等大小的 Java 文件 每次我对一个文件 BuildTable java 进行更改时 Git 都会将其报告为巨大的更改 即使只是一两行 BuildTable java 大约有 200 行 本次提交中的更改仅更改了一行 git d
  • git 错误:无法处理 https

    当我尝试使用 git clone 时https xxx https xxx我收到以下错误我不处理协议 https 有人可以帮我吗 完整消息 dementrock dementrock A8Se git 克隆https git innosta
  • 在推送后检索孤立的提交对象 --force

    Doing push force总是有点冒险 这里有一个例子 说明它如何产生一些问题 例如远程丢失修订版本 假设 有一个人Bob已更新远程master分支来自B to C 还有另外一个人Mike还没有获取此更新并且HEAD of his m
  • 以非交互式方式查找合并提交的正确父级

    我正在准备 svn2git 迁移 同时https github com nirvdrum svn2git https github com nirvdrum svn2git虽然非常有用 但我仍然遇到了一些恶作剧 我已经清理掉了大部分 但还剩
  • 有没有一种干净的方法来处理两个以相同内容开头的原始 git 存储库?

    假设我有两个根据相同的初始内容创建的存储库 例如 如果我使用 git 来管理 etc apache2 中的 apache 配置文件 然后我运行git init分别在机器 A 和机器 B 上 此后 我对 machine b 进行了一些配置更改
  • PHP Github Pull 脚本错误“权限被拒绝(公钥)”

    我已经设置了一个 PHP 脚本来执行 GitHub 拉取 这包含在我的 Github 文件夹中 home mysite public html github github pull php 我的服务器已经有 SSH 公钥 就像我执行git
  • 在git的远程存储库上创建私有分支

    我想在我们公司的 git 上构建特定的流程 开发人员在他的本地计算机上创建一个分支并在那里提交一些文件 dev 将此分支推送到远程仓库 其他开发者无法访问该分支 经过几轮推动开发人员决定发布他的更改 将他的私人分支合并到公共分支 推动该公共
  • “警告:'github.com' 的 ECDSA 主机密钥与 IP 地址的密钥不同”问题

    我不知道发生了什么 但有一天 当我起床时git push我的改变是 Warning the ECDSA host key for github com differs from the key for the IP address 140
  • Git hook:如果创建了新分支,则将新文件添加到存储库

    我正在编写一个 git hook 它检查是否创建了新分支 如果是 则将一些预定义文件添加到该新分支的存储库中 一些配置文件 然而 由于分支实际上正在创建过程中 所以我的逻辑失败了 目前我正在这样做post receive钩子 看起来像这样
  • 设置 Git osxkeychain 错误

    我正在设置 Git 并且正在关注http lifehacker com 5983680 how the heck do i use github http lifehacker com 5983680 how the heck do i u
  • 本地提交推送到中央服务器

    在工作中 我们使用 perforce 并被鼓励定期对其进行承诺 我对此很满意 然而 我想运行像 Mercurial 这样的东西 这样我就可以在本地提交正在进行的工作并且不一定编译 运行的东西 然后从中定期提交到中央 perforce 服务器

随机推荐

  • java fop,使用ApacheFOP从Java中的XML生成PDF

    I am trying to generate on the fly PDF reports from Java objects I have not been able to find many examples of this so I
  • Hbase的入门心得:

    Hbase的入门心得 在了解了Hadoop的大家族的核心成员HDFS MapReduce以及资源管理器YARN后 HBase又是一个新颖的技术出现 在超人学院吴超老师的视频里介绍到 HBase Hadoop Database是一个分布式的
  • 图智能在反洗钱方向的应用实践丨Fabarta 技术专栏

    导读 依托于 Fabarta 在金融行业应用图技术解决反洗钱业务领域问题成功经验 将图智能在反洗钱方向的应用实践进行总结并分享 主要包括以下几个方面 全文目录 反洗钱业务业务背景 当前反洗钱的业务流程及痛点 如何应用图智能进行反洗钱分析 案
  • Seaborn 入门

    一 Seanborn Seaborn是基于Matplotlib的Python数据可视化库 对matplotlib进行二次封装而成 它提供了一个高级界面 用于绘制引人入胜且内容丰富的统计图形 只是在Matplotlib上进行了更高级的API封
  • IOS高访新浪微博界面(讲解如何自定义UITableViewCell,处理@#链接 特殊字符)

    在开发过程中 有好多应用都会嵌入新浪微博的界面 今天整理一下代码 首先看界面效果图 Demo下载地址 http download csdn net detail rhljiayou 6760745 思路 首先放一个UITableView 自
  • 解决Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is java.lang.NullPointer

    目录 1 背景 2 问题原因 3 解决办法 方法一 修改配置 方法二 将swagger切换成springdoc 1 背景 升级springboot版本从2 2到2 6 6后 同时使用swagger3 启动后报错 Failed to star
  • RGB颜色表示

    光的色散 牛顿的光的色散实验让人们了解了白光光是由单色光组成的 当白光通过三棱镜就能产生光的色散 分解后白光是由红 橙 黄 绿 蓝 靛 紫等各种色光组成的 而红 绿 蓝则是光的三原色 RGB解释 RGB色彩模式是工业界的一种颜色标准 是通过
  • .NET的第三方软件问题

    很多时候 NET是我的首选平台 它通用 一致 工具齐全 是的 我们对于C 的创新很兴奋 并且时不时会有很好的技术出现 当前的Blazor或者久远的silverlight 但是 如果一个NB的开发者说 net是给在银行工作的人用的 好吧 他们
  • Java equals方法

    对于Object的 equals方法 他比较的是对象是否为同一个对象 如果继承了Object的equals方法没有重写 那么比较的是对象的地址 而String类的equals方法比较的是内容
  • Python人一定要知道的13个代码片段(超有用,拒绝标题党!)

    Python人一定要知道的13个超有用的代码片段 这些日常片段将优化你的Python编程代码 当你每天使用Python来解决挑战 开发算法和构建应用程序时 你会发现自己在不断地重复一些任务 这就是为什么为通常执行的任务准备一些代码片段是一个
  • 华为机试HJ13 句子逆序

    HJ11 数字颠倒 Python 题目 解题思路 代码 结果 题目 解题思路 1 split后倒转 转list 再用空格间隔后输出 列表倒序用reversed 要再转list 代码 split后倒转 转list 再用空格间隔后输出 prin
  • java8 List根据某个字段去重

    1 使用toCollection和TreeSet去重 TreeSet内部使用的是TreeMap 使用指定Comparator比较元素 如果元素相同 则新元素代替旧元素 List
  • 计算机专业毕业答辩问代码吗,计算机专业毕业论文答辩技巧

    在做计算机毕业设计的整个过程中 一般有三个答辩 即开始答辩 中期答辩和最终答辩 有些学校简化为两个 即开题答辩和期末答辩 还有的学校将直接保留了最终答辩 省略了开始答辩和中期答辩 当然不管你要参加几次答辩 亦或者是哪种类型的答辩 最关键的还
  • bp神经网络预测模型实例,bp神经网络模型的建立

    如何建立bp神经网络预测 模型 建立BP神经网络预测模型 可按下列步骤进行 1 提供原始数据2 训练数据预测数据提取及归一化3 BP网络训练4 BP网络预测5 结果分析现用一个实际的例子 来预测2015年和2016年某地区的人口数 已知20
  • flink 第一个窗口开始时间以及offset作用

    简述窗口开始时间 1 当flink程序启动时 创建的第一个window的开始时间是由程序决定的 具体的算法如下 2 窗口开始时间 第一条记录时间戳 第一条记录时间戳 窗口时长 也就是从utc0时区的1970 01 01 00 00 00 0
  • 小白也能看懂的详细Java的IO流解析!!!

    IO体系特别大 猫叔后续还会继续完善更新的 第一章 IO概述 Java中I O操作主要是指使用 java io 包下的内容 进行输入 输出操作 输入 input 也叫做读取数据 输出Output也叫做作写出数据 IO流操作的是文件 可以往文
  • 自动控制理论(6)——高阶系统的时域分析及线性系统的稳定性分析

    系列文章目录 自动控制理论 1 自动控制理论概述 自动控制理论 2 控制系统的数学模型 微分方程 传递函数 自动控制理论 3 控制系统的数学模型 系统框图和信号流图 自动控制理论 4 系统的时域性能指标和一阶系统的时域分析 自动控制理论 5
  • IDEA常用插件之类Jar包搜索Maven Search

    文章目录 IDEA常用插件之类Jar包搜索Maven Search 说明 安装插件 使用方法 1 搜索自己要搜的jar包 2 根据类名搜索 IDEA常用插件之类Jar包搜索Maven Search 说明 它可以帮助用户快速查找和浏览Mave
  • 校园网设计超超超级详细的配置来了(以河北科技大学为例)

    1 场景描述 1 1部门 信息学院 电气学院 机械学院 信息学院有计算机系 网络系 电子系 电气学院有电气系 自动化系 测控系 机械学院有机械系 材料科学系 机械电子工程系 1 2 建筑物分布 信息楼 电气楼 机械楼 网管中心 1 3 申请
  • 如何在GitHub上大显身手?

    码农朋友们都知道 gitHub是一个面向开源及私有软件项目的托管平台 上面托管了众多的优秀的项目 比如linux内核源码 git源码 机器学习框架tensorflow等等 当然 除了这些顶尖项目外 还有海量的高手开发的优秀项目 所有的这些项