基础入门版
- pull request
- 一、fork项目
- 二、clone代码到本地
- 三、进入到克隆的项目目录下
- 四、列出所有分支
- 五、创建一个本地分支,并追踪远程项目分支
- 六、查看当前分支
- 七、与远程仓库建立连接
- 八、与上游仓库建立连接
- 八、同步最新代码
- 九、修改代码并提交
- 十、提交pr
pull request
Pull Request(拉取请求)是一种非常重要的协作机制,它是 Git 和 GitHub 等代码托管平台中常见的功能。在开源项目中,Pull Request 被广泛用于参与社区贡献,从而促进项目的发展。
一、fork项目
先登录自己的github账户,找到自己要提pr的项目。这里我们以datawhalechina/grape-book为例:
如果要fork全部分支,记得一定要去掉只选择主分支的对勾(默认是只选择主分支)
等待几秒之后,进入主页就可以看到fork后的项目副本到自己的仓库目录下了。
二、clone代码到本地
执行 git clone
命令,将此副本 clone
到本地(推荐使用ssh的形式,可以避免输入用户名和密码)。即在本地的某个目录下,打开命令行,输入如下代码
git clone 红色框的地址
这样子代表已经成功
三、进入到克隆的项目目录下
执行 cd 克隆项目地址
命令,进入项目目录下。即在本地的某个目录下,打开命令行,输入如下代码。
像这样子,代表已经成功。
四、列出所有分支
执行git branch -a
命令,确认下是否克隆下所有分支项目
如图所示,项目四个分支已经全部clone到本地
五、创建一个本地分支,并追踪远程项目分支
执行git checkout -b v2 origin/v2
命令,即在本地创建一个名为v2
的分支,并将其设置为跟踪远程的v2
分支。现在,你可以在本地进行v2
分支上的工作。
六、查看当前分支
为了确保所有操作不犯错,我们在修改内容前,需要再一次确认下当前分支,执行git branch
命令,即查看当前分支
如图所示,现在是v2分支。
七、与远程仓库建立连接
查看分支之后,我们看看是否与远程仓库建立了连接
命令行输入以下代码:
git remote -v
可以看到,已经建立连接,
(fetch)
表示该 URL 地址用于获取远程仓库的代码(即拉取操作)。(push)
表示该 URL 地址用于向远程仓库推送本地仓库的代码。
八、与上游仓库建立连接
接下来还需要与上游建立连接,这里上游指的是一开始fork的那个项目源,即datawhalechina/grape-book
执行git remote add upstream 地址
,示例
git remote add upstream https://github.com/datawhalechina/grape-book.git
此时,我们再输入git remote -v
,就可以看到本地已经和远程仓库以及上游建立了连接。
origin
它的拉取作用是获取用户在 GitHub 上的grape-book
仓库的代码。它的推送作用是将本地修改的代码推送到 用户在 GitHub 上的grape-book
仓库中。upstream
它的拉取作用是获取来自 上游成员在 GitHub 上的grape-book
仓库的代码。它的推送作用是将本地修改的代码推送到上游在 GitHub 上的grape-book
仓库中。
八、同步最新代码
这么做的原因是当你在开发时,如果多人协作开发同一个项目,那么可能其他人也在修改代码并提交到仓库中。如果你 fork 了这个项目的代码,那么你 fork 的代码可能已经不是最新的了,因此需要及时更新代码,以保证你的代码与仓库中最新的代码保持同步。
命令行输入以下代码:
git fetch upstream v2
即,从上游仓库 upstream
中获取分支 v2
的最新代码,并将最新的代码合并到你当前的分支。
九、修改代码并提交
修改完毕后,提交变更的代码:
git add.
git commit -m 'update'
git push -u origin v2:v2
即将本地的 v2
分支推送到名为 origin
的远程仓库的 v2
分支上,并通过 -u
参数建立本地 v2
分支与远程 v2
分支之间的追踪关系。
十、提交pr
我们回到自己仓库的项目主页,可以看到刚才提交的记录,则表示之前的操作都已成功。接下来,点击箭头所指的Pull Requests
选项。
点击箭头所指的New pull request
按钮
接下来,点击Creat pull request
即可提交成功。
最后,只需耐心等待管理员的审核即可。开源项目的所有pr记录可以在这里查看,包括你刚才提交的。
如果你的提交被审核通过,则会像下面这个这样,显示All checks have passed