Github教程(3)
作者:Grey
原文地址:Github教程(3)
Pull Request
Pull Request 是自己修改源代码后,请求对方仓库采纳该修改时采取的一种行为。
场景1:
用户A在fork完用户B的项目时,A修改了代码并提交了一个Pull Request给B用户,B用户Merge了A用户提交的Pull Request。
假设需要fork以下项目:
https://github.com/grey927/TestForkPR
点击账户右上角的fork按钮,fork项目到自己账户下
打开Git Bash
将项目clone到本地:
$ git clone https://github.com/GreyZeng/TestForkPR.git
Cloning into 'TestForkPR'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.
进入TestForkPR目录,查看分支状态:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
在TestForkPR目录下增加一个文件,T.java
增加到暂存区:
$ git add T.java
提交修改:
$ git commit -m "this is test"
[master 2b72d0f] this is test
1 file changed, 5 insertions(+)
create mode 100644 T.java
Push到自己账户下的远程仓库下:
$ git push -u origin master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 345 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/GreyZeng/TestForkPR.git
daaf13f..2b72d0f master -> master
Branch master set up to track remote branch master from origin.
打开自己账户的远程仓库,点击New Pull Request按钮:
弹出文件差异对比界面
确认无误时,点击Create pull request
写上相关描述并点击Create pull request:
此时,原仓库会收到一条pull request的信息:
点击进入这条信息,
点击Merge pull request,即可接受这个pull request的请求。
场景2:
直接clone原仓库到本地,不执行fork操作,并同时使用fetch/merge命令使本地仓库和原仓库保持代码一致。
举例:
原仓库的地址:https://github.com/grey927/TestFetchMerge
直接clone至本地:
$ git clone https://github.com/grey927/TestFetchMerge.git
Cloning into 'TestFetchMerge'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.
给原仓库设置upstream的名称,将其作为远程仓库。
$ git remote add upstream https://github.com/grey927/TestFetchMerge.git
我们每次只要从原仓库获取最新源码,并和本地分支进行合并即可:
获取最新源码:
$ git fetch upstream
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/grey927/TestFetchMerge
* [new branch] master -> upstream/master
合并:
$ git merge upstream/master
Updating e2215cc..a215a8a
Fast-forward
newfile.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 newfile.txt
作者:GreyZeng
出处:https://www.cnblogs.com/greyzeng/p/5054495.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
你可以在这里自定义其他内容
本文来自博客园,作者:Grey Zeng,转载请注明原文链接:https://www.cnblogs.com/greyzeng/p/5054495.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程