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
标识的按钮,如下图:
-
点击这个操作后会将这个仓库的文件、提交历史、issues和其余东西的仓库复制到自己的
github
仓库中,而你本地仓库是不会存在任何更改。 -
然后你就可以通过
git clone
对你这个复制的远程仓库进行克隆。 -
后续更改任何东西都可以在本地完成,如
git add
、git commit
一系列的操作,然后通过push
命令推到自己的远程仓库。 -
如果希望对方接受你的修改,可以通过发送
pull requests
给对方,如果对方接受。则会将你的修改内容更新到仓库中。
整体流程如下图:
2.2 clone
clone
的作用是将文件从远程代码仓下载到本地,从而形成一个本地代码仓。
执行clone
命令后,会在当前目录下创建一个名为【仓库名】
的目录,并在这个目录下初始化一个 .git
文件夹,然后从中读取最新版本的文件的拷贝。默认配置下远程 Git
仓库中的每一个文件的每一个版本都将被拉取下来。
2.3 branch
branch
,译为分支,其作用简单而言就是开启另一个分支, 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
Git
处理分支的方式十分轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。
在我们开发中,默认只有一条master
分支,如下图所示:
通过git branch
可以创建一个分支,但并不会自动切换到新分支中去。
下图表示创建了一个分支——testing,其中HEAD表示当前分支:
通过git checkout
可以切换到另一个testing
分支:
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:
-
创建分支 用于添加新特性或修复问题
更新本地工作目录和远程 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 # 查看当前分支
-
提交更改 到本地分支,提交前请进行 lint 检查,并进行签名提交:
git rebase upstream/,分支名git add <file_or_directory> # 将更改添加到暂存区 git commit -s -m "message for your changes" # 上传文件并添加标签
若出现如下报错,设置账号密码即可。
编辑
-
推送分支 到您的 Fork 仓库,建议每个 PR 只包含一次提交:
# 与上游同步 git fetch upstream main git rebase upstream/main
-
提交拉取请求 (PR)
提交 PR 前,建议先审查一下您的更改,确保您的代码与主分支没有冲突,并且没有包含冗余的代码。
网页提交PR:
在自己fork的仓库中进行,先添加文件再在跳出的【Compare & pull request】中PR即可。
4 参考
【GitHub】如何在github上提交PR(Pull Request) + 多个pr同时提交、互不干扰_github pr-CSDN博客
Github提交PR与修改pr_github 修改pr-CSDN博客