当前位置: 首页 > news >正文

Github提交Pull Request教程 Git基础扫盲(零基础易懂)

1 PR是什么?

PR,全称Pull Request(拉取请求),是一种非常重要的协作机制,它是 Git 和 GitHub 等代码托管平台中常见的功能,被广泛用于参与社区贡献,从而促进项目的发展。

PR的整个过程:如果想给别人的开源仓库贡献代码,通常是先 fork 别人的项目,,然后本地修改完成提交到自己的个人 fork 仓库, 最后提交 PR ,等待别人合入你的代码。

2 fork、clone、branch?

2.1 fork

Git仓库中,fork代表分叉,克隆某个仓库,形成新拷贝。

fork包含了原来的仓库(即upstream repository,上游仓库)所有内容,如分支、Tag、提交,如果想将你的修改合并到原项目中时,可以通过的 Pull Request 把你的提交贡献回原仓库。

  • 使用方法:

github发现感兴趣项目的时候,可以通过点击github仓库中右上角fork标识的按钮,如下图:

img

  • 点击这个操作后会将这个仓库的文件、提交历史、issues和其余东西的仓库复制到自己的github仓库中,而你本地仓库是不会存在任何更改。

  • 然后你就可以通过git clone对你这个复制的远程仓库进行克隆。

  • 后续更改任何东西都可以在本地完成,如git addgit commit一系列的操作,然后通过push命令推到自己的远程仓库。

  • 如果希望对方接受你的修改,可以通过发送pull requests给对方,如果对方接受。则会将你的修改内容更新到仓库中。

整体流程如下图:

image-20241201213839594

2.2 clone

clone的作用是将文件从远程代码仓下载到本地,从而形成一个本地代码仓。

执行clone命令后,会在当前目录下创建一个名为【仓库名】的目录,并在这个目录下初始化一个 .git 文件夹,然后从中读取最新版本的文件的拷贝。默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。

2.3 branch

branch,译为分支,其作用简单而言就是开启另一个分支, 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。

Git 处理分支的方式十分轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。

在我们开发中,默认只有一条master分支,如下图所示:

image-20241201210919706

通过git branch可以创建一个分支,但并不会自动切换到新分支中去。

下图表示创建了一个分支——testing,其中HEAD表示当前分支:

image-20241201210858382

通过git checkout可以切换到另一个testing分支:

image-20241201211038039

Git 删除分支——如何删除本地或远程分支_git 删除本地分支-CSDN博客

2.4 三者区别

  • fork 只能对代码仓进行操作,且 fork 不属于 git 的命令,通常用于代码仓托管平台的一种“操作”;

  • clone是 git 的一种命令,作用是将文件从远程代码仓下载到本地,从而形成一个本地代码仓;

  • branch 特征与 fork 很类似,fork 得到的是一个新的、自己的代码仓,而 branch 得到的是一个代码仓的一个新分支;

3 在Github上提交PR

基本流程:

在这里插入图片描述

3.1 Fork

FORK 目标仓库<xx.github.io>到您的仓库,相当于得到一个可以修改的拷贝,地址为 :

https://github.com/<your-username>/xx.github.io

3.2 Clone

CLONE 您自己的仓库到本地。

git clone https://github.com/<your-username>/seu.github.io.git

然后,您可以创建新的分支来完成您想要做的修改。

3.3 提交Pull Request

进入目录:

cd xx.github.io

设置 Remote为 https://github.com/SEU-Master/seu.github.io,使用以下两个命令:

git remote add upstream https://github.com/SEU-Master/seu.github.io
git remote set-url --push upstream no-pushing

配置好远程仓库后,您可以通过【git remote -v】命令检查您的 git 远程配置:

$ git remote -v
origin     https://github.com/<your-username>/seu.github.io.git (fetch)
origin     https://github.com/<your-username>/seu.github.io.git (push)
upstream   https://github.com/SEU-Master/seu.github.io (fetch)
upstream   no-pushing (push)

配置好这些后,您可以轻松地将本地分支与上游分支同步。

命令行提交PR:
  1. 创建分支 用于添加新特性或修复问题

    更新本地工作目录和远程 Fork 仓库:

    cd seu.github.io
    git fetch upstream
    git checkout main  # 选择main分支

    创建一个新的分支:

    git checkout -b s3di-lab  # 创建名为s3di-lab的新分支
    git checkout s3di-lab     #切换到此分支

    在新分支上进行更改,之后构建并测试代码。

    git branch # 查看当前分支
  2. 提交更改 到本地分支,提交前请进行 lint 检查,并进行签名提交:

    git rebase upstream/,分支名git add <file_or_directory>  # 将更改添加到暂存区
    git commit -s -m "message for your changes" # 上传文件并添加标签

    image-20241202002318172

    若出现如下报错,设置账号密码即可。

  3. 推送分支 到您的 Fork 仓库,建议每个 PR 只包含一次提交:

    # 与上游同步
    git fetch upstream main
    git rebase upstream/main
  4. 提交拉取请求 (PR)

    提交 PR 前,建议先审查一下您的更改,确保您的代码与主分支没有冲突,并且没有包含冗余的代码。

网页提交PR:

在自己fork的仓库中进行,先添加文件再在跳出的【Compare & pull request】中PR即可。

image-20241202001305848

4 参考

【GitHub】如何在github上提交PR(Pull Request) + 多个pr同时提交、互不干扰_github pr-CSDN博客

Github提交PR与修改pr_github 修改pr-CSDN博客


http://www.mrgr.cn/news/82818.html

相关文章:

  • SQL使用视图
  • 基于 Boost.Asio 和 Boost.Beast 的异步 HTTP 服务器(学习记录)
  • OkHttp深度解析:请求流程、分发器机制、拦截器工作及TCP连接复用
  • 嵌入式驱动开发详解8(阻塞/非阻塞/异步通信)
  • 简单的生产数据库重连策略优化
  • 数据库工程师进阶秘籍:云计算基础知识题目精选与答案(附PDF)
  • imageio 图片转mp4 保存mp4
  • 【FTP 协议】FTP主动模式
  • 【TextIn—智能文档解析与DocFlow票据AI自动化处理:赋能企业文档数字化管理与数据治理的双重利器】
  • 【学Rust开发CAD】1 环境搭建
  • WebRtc02: WebRtc架构、目录结构、运行机制
  • unity3d-搞个场景漫游如何实现Alpha
  • Java内存模型与线程
  • 《异步编程之美》— 全栈修仙《Java 8 CompletableFuture 对比 ES6 Promise 以及Spring @Async》
  • 2024年AI图像生成热门模型回顾
  • 苍穹外卖 项目记录 day03
  • Requests聚焦爬虫-数据解析
  • 服务器双网卡NCCL通过交换机通信
  • 【学Rust开发CAD】2 创建第一个工作空间、项目及库
  • 【SpringSecurity】二、自定义页面前后端分离
  • 鸿蒙APP之从开发到发布的一点心得
  • 前端实现大文件上传(文件分片、文件hash、并发上传、断点续传、进度监控和错误处理,含nodejs)
  • 每日AIGC最新进展(80): 重庆大学提出多角色视频生成方法、Adobe提出大视角变化下的人类视频生成、字节跳动提出快速虚拟头像生成方法
  • 医学图像分析工具01:FreeSurfer || Recon -all 全流程MRI皮质表面重建
  • ISP图像调优流程
  • Unity中 Xlua使用整理(一)