给github项目贡献代码详细步骤

2023-10-29

本文以 dlink 项目为例。

1. fork

第一步是打开 github 上的项目地址,然后点击页面右上角的 fork 按钮,将项目 fork 到自己账号的仓库,记得登录自己的 github 账号。具体看下面图示。

在这里插入图片描述
在这里插入图片描述

这个页面,不需要修改什么参数,保持默认即可。

fork 成功之后,网页就会跳转到自己仓库下的 dlink 项目页面。

2. idea 克隆项目

在这里插入图片描述

打开自己的 idea ,然后从 “来自版本控制获取” 来打开克隆自己仓库下的项目到本地。

这一步也可以使用 git 命令进行操作,不过 idea 界面化操作更简单,git 命令在这儿就不做演示了。

3. 完成一些配置

克隆完成后,打开 idea 下面的终端,输入一些 git 命令来进行一些必要的操作。

在这里插入图片描述

3.1. 检查 github 账号信息

git config --global -l

得到如下结果则没问题

user.name=your-user-name
user.email=your-email-address
core.quotepath=false
http.lowspeedlimit=0
http.lowspeedtime=999999
http.sslverify=false

一定要看好最上面的两项,要和自己的 github 账号里面的信息保持一致,否则给项目贡献了代码之后,虽然 github 项目上有贡献记录,但是自己的账号却不会出现在贡献者列表。

如果有信息后面显示为空,或者是和自己的 github 账号里面的信息不一致,则可以使用下面的命令进行修改。

git config --global user.name "your-user-name"
git config --global user.email "your-email-address"

3.2. 增加远程仓库

查看远程仓库信息:

git remote -v

第一次运行该命令,结果应该是只要你自己仓库的信息,如下:

origin  https://github.com/ziqiang-wang/dlink.git (fetch)
origin  https://github.com/ziqiang-wang/dlink.git (push)

增加远程仓库:

git remote add upstream https://github.com/DataLinkDC/dlink.git

命令解释:

  • add:固定写法,表示增加远程仓库。
  • upstream,远程仓库的名称,可以自己命令,以后会用到这个名称。
  • https://github.com/DataLinkDC/dlink.git:远程仓库的 git 地址。

查看远程仓库信息:

git remote -v

上面增加远程仓库成功的话,运行结果应该如下;

origin  https://github.com/ziqiang-wang/dlink.git (fetch)
origin  https://github.com/ziqiang-wang/dlink.git (push)
upstream        https://github.com/DataLinkDC/dlink.git (fetch)
upstream        https://github.com/DataLinkDC/dlink.git (push)

最后获取远程项目的所有变更:

git fetch upstream

upstream:这个就是上面添加的远程仓库的名称。

成功之后,结果如下:

remote: Enumerating objects: 378, done.
remote: Counting objects: 100% (377/377), done.
remote: Compressing objects: 100% (127/127), done.
Receiving objects: 100% (378/378), 154.80 KiB | 29.00 KiB/s, done. 1

Resolving deltas: 100% (196/196), completed with 22 local objects.
From https://github.com/DataLinkDC/dlink
   d10005ba..4eb1afc1  dev        -> upstream/dev
   0e53d225..6dde9244  dev-tenant -> upstream/dev-tenant

如果由于网络远程造成超时失败等问题,重复运行上面的命令即可。

4. 克隆分支

现在就可以在项目代码的基础上开始进行代码修改了。

修改代码之前,要先克隆自己想要提交代码的远程分支。如果想要基于最新代码进行开发,那就 checkout dev 分支,如果想要基于某个版本的分支进行修改,那就 checkout 对应版本的分支。

5. 提交 pr

此时,你已经修改了很多代码,并且本地也进行了很多测试,然后就可以提交更改,最后提交 pr 了。

5.1. 获取远程项目的所有变更

git fetch upstream

5.2. rebase 远程项目更改

这一步,我同样以 idea 界面操作来演示。

比如,现在我们想将自己本地已经修改的分支代码提交到远程仓库的 dev 分支,那就需要将远程仓库的 dev 分支代码 rebase 到自己的本地分支,下面是 idea 中的操作。

在这里插入图片描述

如果你的 idea 界面为英文界面的话,可以安装“Chinese(Simplified)Language Pack/中文语言包”插件,以切换中文界面。英文界面的变基rebase

5.3. 提交修改到自己的仓库

操作成功之后,就可以将自己修改的代码提交到自己的仓库,最后再提交 PR 了。

在这里插入图片描述

从这个界面中,可以看到自己修改过的代码,要注意,只提交自己想要提交的那些代码文件,不要提交一些不需要提交的文件。

同时也可以根据修改的内容,将修改过的文件放到不同的提交点里面,也就是每次提交,只提交当前提交点涉及到的文件。之后项目管理员进行代码 review 时,会更清晰。

在这里插入图片描述

进入 git 窗口,然后切换到自己的本地分支,就可以看到自己刚才提交的多个提交点了,之后就可以将这个分支所有更改提交到自己的仓库了。

在这里插入图片描述

一定要注意,这一步是将更改提交到自己的仓库,最好是进行强制推送,避免有些提交点没有提交到自己仓库对应的分支下。

5.4. 提交 PR

打开远程仓库,然后点击“Pull requests”,就会出现下面的界面

在这里插入图片描述

然后点击“Compare & pull request”,或者是“New pull request”进入提交 PR 的界面

在这里插入图片描述

填写好一些必要的信息之后,就可以进行 PR 的提交了。

提交 PR 只有,管理员可能会对 PR 进行一些提问或讨论,到时候直接回复即可。

5.5. 其他

每次提交 PR 之前,都需要通过 git fetch upstream 命令来获取远程仓库的所有更改,然后将远程仓库的 dev 分支 rebase 到自己的本地分支,然后提交更改,否则最后提交 PR 时,可能会显示代码有冲突。

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

给github项目贡献代码详细步骤 的相关文章

  • 在 github 上的 fork 中跟踪上游的最佳实践

    摘要 对于要维护一组本地更改的上游存储库 处理长期运行跟踪的最佳实践是什么 我想让 github 上的 fork 与上游保持同步 但仍然允许清晰跟踪 fork 特有的更改 对于本次讨论 假设upstream指向主项目存储库并且origin指
  • git 显示已添加到 gitignore 的文件中的更改?

    我已经将 log2 文件夹和 main js 文件添加到 gitignore 如屏幕截图所示 但即使执行后git rm cached r我仍然可以看到 git 正在检测 main js 和 log2 文件夹内文件的更改 怎么会 这些的常见问
  • Git:发送电子邮件而不提交

    我有一个项目 我做了更改 并想使用 git send email 功能将它们发送给另一个用户 我发现它可以通过发送补丁来工作 由git format patch每次提交 是否可以只发送diff的 我不想先提交 然后发送补丁 是否有gitfo
  • 如何制作 github PR 请求审查整个文件?

    有这个问题 https github com isaacs github issues 284这是相关的 允许对更改集之外的部分代码进行注释 我只是想知道是否有人有聪明的解决方法或流程来实现类似的 也许更简单的事情 因此 我有一组不同的文件
  • Composer 用于下载私有 GitHub 存储库

    我无法使用 Composer 下载 github 私人存储库 php composer phar update 我收到以下错误 The https api github com repos company private1 https ap
  • 致命:.git/info/refs 无效:这是一个 git 存储库吗?

    我有一个托管在 Assembla 上的 Git 存储库 我正在尝试执行以下操作 git push u origin master 我一遍又一遍地收到以下错误 fatal https url repo name git info refs n
  • VS 2015 + Bower:在防火墙后面不起作用

    Problem 在 Visual Studio 2015 中 使用 Bower 我的包在防火墙后面时恢复失败 并出现类似以下内容的错误 ECMDERR 无法执行 git ls remote tags heads git github com
  • 无法从 Sourcetree 拉取 Git 远程存储库

    我生成了 ssh 密钥并配置了我的 git 和 SourceTree 我可以 git pull 并从 Git bash 执行其他操作 注意 我在 bashrc 中添加了以下内容以使其正常工作 eval ssh agent ssh add 然
  • 在 Azure DevOps 项目之间移动存储库时保留拉取请求

    我在同一帐户内有两个 Azure DevOps 项目 我想将存储库从一个项目移动到另一个项目 这一页探索如何在具有完全保真历史记录的团队项目之间移动 git 存储库 https learn microsoft com en us azure
  • 使用终端时 Git 推送在总计后卡住了?

    我尝试将一些文件推送到Github 总大小只有22 2M 我不知道为什么它在总行之后卡住了 我读过推送到 Github 时 Git 推送挂起 https stackoverflow com questions 16906161 git pu
  • 如何将工作树与提交进行比较?

    我在用着 git diff mycommit 用于比较我的工作树mycommit 但它似乎忽略当前索引中不存在的文件 您可以按如下方式重现它 git init echo A gt A txt git add git commit m A g
  • 如何删除 GitHub markdown 项目符号/列表上的额外行空间?

    GitHub 的 Markdown 代码 1 First item subitem 1 Second item 之间产生很大的空间First Second和subitem 如何制作subitem靠近第一个项目 而不是正好在它们的中间 这是我
  • 如何使用 Git 跟踪目录而不是文件?

    我最近开始使用 Git 但只有一件事遇到了麻烦 如何在不跟踪目录内容的情况下跟踪目录 例如 我正在开发的网站允许上传 我想跟踪上传目录 以便在分支等时创建它 但显然不是其中的文件 在开发分支中的测试文件或主控中的真实文件 在我的 gitig
  • 更新另一个 Action 的工作流程文件的 GitHub Action

    我在同一个存储库中有两个 GitHub Actions 我正在尝试更新其中一个 但在尝试提交并推送更改时出现以下错误 remote rejected HEAD gt some branch refusing to allow a GitHu
  • Git - 如何将整个目录恢复到特定提交(删除任何添加的文件)

    我想恢复 git 中的目录 恢复其中的所有文件 并删除自该提交以来添加的所有文件 进行结账似乎只能满足我的第一个要求 但不会删除任何文件 我想出了最简单的解决方案 git rm path to dir git checkout
  • git 排除与忽略

    I use Tower http www git tower com 用于在 Mac 中使用 Git Tower 中的设置具有创建 gitignore 的 忽略 部分 但它还有另一个名为 排除 的部分 似乎可以将排除与 git ls fil
  • 缺少节点-v59-linux-x64/grpc_node.node

    我正在尝试在我的服务器中使用 Firebase admin SDK 当我部署时 出现错误 我在 firebase admin node module 映射中缺少文件 node v59 linux x64 grpc node node 我在包
  • 无法通过 Git Bash 克隆 git 存储库

    在尝试使用克隆存储库时git clone 它显示以下错误 致命 无法访问 https github com microsoft c9 python getting started git https github com microsoft
  • 仅使用 Git grep 的文件名

    我只想查看文本中包含特定单词的不同文件 current directory git grep word 显示文件中具有匹配单词的每一行 所以我尝试了这个 current directory git grep word files with
  • Github - 上传文件

    我正在尝试将文件夹添加到 github 存储库 该文件在 github 上显示为空 并有一个绿色箭头 有谁知道如何解决这个问题 我将不胜感激你的帮助 谢谢 这看起来类似于 Git 如何跟踪未跟踪的内容 https stackoverflow

随机推荐

  • 解决Win10家庭版不能使用grpedit.msc

    前言 大家都认为 Windows 10家庭版中并不包含组策略 其实不然 它是有相关文件的 只是不让你使用而已 那么我们让系统允许你使用就好了 操作步骤 1 首先你需要在桌面上新建一个txt文本文档 然后将以下代码复制到这个新建的txt文本文
  • 常见模拟电路设计 三(含仿真) :文氏桥正弦波发生电路

    参加电赛的过程中遇到了一个需要制作正弦波发生器的任务 这里分享一下方案 对于低频 几十K以下 的正线波信号 完全可以由RC振荡器来实现而不需要引入电感L 文氏桥电路的基本结构 首先 红色箭头标明的是文氏桥电路的桥臂 桥臂既是选频部分 也是正
  • ubuntu 20.04中sources.list文件恢复系统默认源

    前言 ubuntu 20 04中sources list文件恢复系统默认源 小白学习 误该后改不回来 找了很久才找到 做个记录 一 sources list文件恢复系统默认源 1 进入编辑 sources list 代码如下 sudo ge
  • JWT解密和python反序列化之[CISCN2019 华北赛区 Day1 Web2]ikun

    知识点 JWT 和cookie一个类型 用于认证身份 将jwt值放在JSON Web Tokens jwt io解密 可以得到结果 但是想要伪造其他的用户的话需要密钥 密钥使用c jwt cracker 中的 jwtcrack 进行破解 破
  • 浏览器辅助神器:油猴脚本使用教程

    油猴脚本 是一段脚本代码 通过它可以让浏览器实现各种各样的扩展功能 和浏览器扩展的作用类似 比如获去链接重定向 微博页面精简 去广告等 相当于给浏览器开了个挂 可以说是浏览器的辅助神器了 相信很多用户都是通过度盘下载脚本认识它的 但它的功能
  • 华为机试OD真题 javaScript和java 叠积木 堆积木

    叠积木 javascript和java两种方式实现 题目描述 给出一个列表如 6 7 5 4 3 2 表示木块的长和宽 当木块的长和宽不大于另个木块的长和宽时 就可以放在上面 此外数组还可以左右翻转 求最多能搭多少层 输入描述 一个二维数组
  • Shell实现自动更新目录名称与文件中版本号信息与时间戳

    背景 修改如下样例目录下所有目录的版本号信息与时间戳 修改如下样例文件中的版本号信息与时间戳 样例目录 find template patch dir template patch dir template patch dir ONIP S
  • 【爬虫实例】下载英雄联盟所有英雄的皮肤

    爬虫 下载英雄联盟所有英雄的皮肤 import requests import os def download pifu ip response requests get ip result response json print resu
  • MongoDB导出命令

    MongoDB导出 1 MongoDB导出命令 1 MongoDB导出命令 在MongoDB的安装目录的bin目录下 有mongoexport这个命令 可以用于mongo的数据导出 mongoexport h ip port port d
  • linux x64 asm 参数传递,NASM汇编学习系列(1)——系统调用和参数传递

    0 说明 本学习系列代码几乎完全摘自 asmtutor com 如果英文可以的 也可以用谷歌浏览器翻译看 可以直接看asmtutor com上的教程 系统环境搭建 我用的是ubuntu18 04 4 server 安装gcc g sudo
  • unix环境高级编程 /ls的实现,以及目录这种文件等

    ls的思路 a gt 目录 b gt 文件名 想要获取某目录下 比如a目下 b文件的详细信息 我们应该怎样做 1 首先 我们使用opendir函数打开目录a 返回指向目录a的DIR结构体c 指向 目录a 的 DIR结构体指针c opendi
  • 全球及中国高端装备制造产业销售前景及投资战略规划研究报告2021-2027年版

    全球及中国高端装备制造产业销售前景及投资战略规划研究报告2021 2027年版 HS HS HS HS HS HS HS HS HS HS HS HS HS HS 修订日期 2021年10月 搜索鸿晟信合研究院查看官网更多内容 第一章 高端
  • 做网络赚钱成功的诀窍

    作者 芊蓝小编 日期 2010年07月30日 来源 互联网 1 不要把网络看得多么深奥难懂 它只是你挣钱的一个工具而已 2 问10个人 不如你自己动脑和手真正解析一件事情 3 不要试图掌握网络上的每个知识 谁都不可能学得完 学会跟你工作最相
  • 2012网易校园招聘杭州站笔试

    恩 今天去参加了网易的笔试 题目随后更新 1 长度为M字符串匹配与长度为N的字符串匹配的时间复杂度 我查了查 O M N KMP能做到 这里 http blog csdn net meixr article details 6456896
  • 基于react+springboot校园管理平台的设计与实现

    一 项目介绍 随着信息科学技术的不断发展 很多高校 中学甚至小学都配备了一套管理系统来有效便捷的进行校园管理 学生信息管理 会议管理等 这些系统极大的提高了学校教学的效率与质量 满足了学校对信息管理的要求 但是 在实际应用过程中 这些管理系
  • Python自动化,模糊匹配助力自动答题,准确率高达100%

    前两天的一篇文章给大家分享了利用 Selenium 自动刷课的脚本 时光飞逝 挂脚本刷完时长 又到了要考试的日子 对于这种 无关紧要 的考试 我打算继续使用 聪明 的自动化工具帮我完成考试 爬取题库 想要完成作答 免不了需要题库的支撑 考试
  • 基于opencv与mediapipe手势关键点检测,并使用KNN近邻算法手势识别(石头、剪刀、布)的python代码实现

    本文主要利用opencv读取摄像头的手势画面数据 利用mediapipe库提供的方法将手势图像画面转化为手部21个关节点的坐标值 通过坐标值的数理关系进行任意手势的识别 通过mediapipe拿到21个手势关节点坐标后 对任意手势识别的方法
  • Excel VBA应用:单元格的字母自动大写转换等操作

    Private Sub Worksheet SelectionChange ByVal Target As Range 所有单元格进行字母大写转换 Application EnableEvents False Target VBA UCas
  • hc-05 模块教程2 (两个hc-05连接)

    http www arduino cn thread 21735 1 1 html 最近在做项目需要建立两个hc 05通讯 但网上教程有限和有很多都不是很清楚所以整合了下资料重新做了一份个人认为比较详细的教程和大家一起分享学习 这个教程说明
  • 给github项目贡献代码详细步骤

    本文以 dlink 项目为例 1 fork 第一步是打开 github 上的项目地址 然后点击页面右上角的 fork 按钮 将项目 fork 到自己账号的仓库 记得登录自己的 github 账号 具体看下面图示 这个页面 不需要修改什么参数