如何在github fork仓库发起Pull Request合入全流程

2023-10-31 01:59

本文主要是介绍如何在github fork仓库发起Pull Request合入全流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:我们要悄悄努力,不用惊艳所有人,只需要惊艳自己就好,因为你是自己人生唯一的负责人!

本篇文章将讲述,github Pull Request合入后,原仓库的commit log如何显示为一条线?
之前也写过类似的两篇文章:
1、github的pull Request使用
2、github上fork原项目,如何将本地仓库代码更新到最新版本?

不同之处在于合入方式,之前写的是按照"merge pull request“合入,在最近开发中,发现这样始终会多出一个commit,在fork仓库同步的时候又会多出一个commit,来回多了两个commit,并且commit log看起来也会交错在一起,不便于阅读。诸如下图:
在这里插入图片描述
通过本篇文章操作后,commit log如下图,清晰整洁。
在这里插入图片描述

一、图解全流程
在这里插入图片描述
二、详细步骤
1.、fork仓库
在这里插入图片描述
2、clone fork仓库到本地
在这里插入图片描述
3.、关联upstream原仓库
在fork本地仓库输入下面命令进行关联:

git remote add upstream <原仓库github地址>

查看仓库地址:

git remote -v

4、 fork本地仓库commit+push
修改完文件后执行下面命令:

git add .
git commit -m 'message'
// push推送到fork远程仓库
git push origin master

5、发起Pull Request
在fork远程仓库,点击Pull Request->New Pull Request,进入以下截图页面
base repository为原仓库的某个分支,
head repository为fork仓库发某个分支
head的某个分支代码合到base的某个分支
在这里插入图片描述
6、原仓库合入PR
进入原仓库的Pull requests可看到刚才发起的PR

github pull request介绍
三种合入方式介绍:

Merge pull request:将fork仓库的每一次提交都合并到原仓库,并且还产生了一个merge commit log。
Squash and merge:将多个commit合并为一个commit添加到原仓库中,会产生一个新的commit id。 Rebase
and merge:将fork仓库的每一次提交都rebase到原仓库,但github的rebase行为与git
rebase略有偏差。GitHub上的变基和合并始终会更新提交者信息并创建新的提交,也就是产生新的commit id。

选择“Squash and merge”进行合入
在这里插入图片描述
合入后会产生如下图的一条commit:
这条commit包含了发起PR时fork仓库的几个commit
在这里插入图片描述
7、fork本地仓库更新
原仓库合入后产生了一条新的commit id,为了保持一致,需要在fork本地仓库进行更新

// 更新并合并原仓库的master分支
git pull --rebase upstream master

更新前:test4和test5为两次commit
在这里插入图片描述
更新后:test4和test5合并为fork原仓库通过squash and merge产生的commit
在这里插入图片描述
8、修改文件后,再commit + push
这时,push推送到远程仓库,需要进行强制覆盖fork远程仓库。因为fork远程仓库仍是test4、test5两次提交的commit,而本地仓库已经更新同步为原仓库的合并commit。不强制覆盖则会在push时提示需要更新与远程分支同步。

git push origin master --force

在这里插入图片描述
至此fork、clone、commit、push、pull整个流程已完成。

愿看到这篇文章的童鞋们不断的学习!不断的爬坑!不断的总结!写出更优质的代码!

这篇关于如何在github fork仓库发起Pull Request合入全流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/312047

相关文章

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请

使用JavaConfig配置Spring的流程步骤

《使用JavaConfig配置Spring的流程步骤》JavaConfig是Spring框架提供的一种基于Java的配置方式,它通过使用@Configuration注解标记的类来替代传统的XML配置文... 目录一、什么是 JavaConfig?1. 核心注解2. 与 XML 配置的对比二、JavaConf

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.

Maven 依赖发布与仓库治理的过程解析

《Maven依赖发布与仓库治理的过程解析》:本文主要介绍Maven依赖发布与仓库治理的过程解析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录Maven 依赖发布与仓库治理引言第一章:distributionManagement配置的工程化实践1

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基