github中fork分支和pullrequest的最佳实践

2023-11-04

<?xml version="1.0" encoding="utf-8"?> github中fork分支和pullrequest的最佳实践

github中fork分支和pullrequest的最佳实践

最近在参与一个国外的github开源项目,遇到自己fork了源库,一段时间之后,源库已经更新了一些内容,这样,自己fork的版本就落后于源库了。那怎么才能与源库保持同步呢?
youbute上一个教学视频讲得非常清楚:
https://www.youtube.com/watch?v=M7ZYkjOWr6g

我这里用文件记录一下,方便以后参阅和查找:
首先,假设有一个远程的repository:
https://github.com/ensime/ensime-server.git

  • 我们需要在界面上,点击右上角的“Fork”,复制一个仓库到自己的github账号下。
  • 然后,把自己账户下到远程仓库复制到本地:
    git clone https://github.com/yangwen0228/ensime-server.git
    git remote add upstream https://github.com/ensime/ensime-server.git
    git remote -v
    

    =>

    origin  https://github.com/yangwen0228/ensime-server.git (fetch)
    origin  https://github.com/yangwen0228/ensime-server.git (push)
    upstream    https://github.com/ensime/ensime-server.git (fetch)
    upstream    https://github.com/ensime/ensime-server.git (push)
    
  • pull request
    毕竟,我们fork仓库就是需要做贡献。这时,我们就要做本地checkout一个新到分支,然后在新到分支里面做修改,保持fork到自己github仓库的主分支永远只用于与upstream的仓库进行同步,任何修改都只是在自己新开的临时分支中进行,进行pull request时也使用临时分支,这样当upstream中有冲突时,只需要使用本地主分支与upstream分支进行rebase同步。这样,本地的主分支永远与upstream的主分支是同步的。而此时,再把临时分支和本地主分支进行一个rebase同步,将conflict修改好,再push。

    这个过程细化一下是这样的(我这里master主分支是2.0,一般情况下,默认是master):

    1. 检查当前的分支:
      git branch
      

      =>

      * 2.0
      
    2. 创建一个新的临时分支:
      git checkout -b dev
      git branch
      

      =>

      2.0
      * dev
      
    3. 修改代码,修改完之后,需要把变化commit到这个分支里面
      git status
      git add .
      git commit -m "#122: some changes."
      
    4. 将临时分支上传到github:
      git push origin dev
      
    5. 在github上进行pull request
      如果一切顺利,那么到这里,远程到maintainer接受了你的pull request。那么,只需要使用本地主分支与upstream分支进行rebase同步,然后删除本地的dev分支即可。
      git push origin --delete dev # 删除github上的dev分支
      git branch -D dev # 删除本地dev分支
      git checkout 2.0
      git pull --rebase upstream 2.0
      git push
      
    6. 如果分支提交之后,远程upstream的分支进行了修改,这是最麻烦的。
      git checkout 2.0
      git pull --rebase upstream 2.0
      git checkout dev
      git rebase 2.0
      

      这时rebase后,有可能会有冲突,就需要手动把conflict修复掉。然后,

      git add .
      git rebase --continue
      
    7. 再将从upstream同步后的内存更新到github上:
      git push --force
      

      由于github上的commit顺序与本地不同,如果直接push需要merge,那就整个乱了。所以,需要使用–force直接覆盖掉github的。

Date: 2017-04-22 10:21

Author: WEN YANG

Created: 2017-07-29 Sat 20:34

Emacs 25.2.1 (Org mode 8.2.10)

Validate

转载于:https://www.cnblogs.com/yangwen0228/p/6747483.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

github中fork分支和pullrequest的最佳实践 的相关文章

  • 『贪吃蛇』AI 算法简易实现(中秋特别版)

    前言 一年一度的中秋节就快到了 平台也有各种各样的中秋发文活动 正在翻阅时偶然间我看到了这篇文章 兔饼大作战 吃月饼 见月亮 还能咬自己 欢庆中秋特制版 掘金 juejin cn 大家肯定比较熟悉了 这个游戏的内核就是贪吃蛇 作者也是对玩法
  • G1理论基础与最佳实践

    文章目录 1 G1理论基础 1 1 G1介绍 1 2 YongGC 1 3 mixed gc 1 4 扩展 1 4 1 记忆集和卡表 1 4 2 STAB和TAMS 1 5 G1相比CMS的优势 2 G1日志解读与经验分享 2 1 日志解读
  • Win10专业版系统Docker安装、配置和使用详细教程

    一 win10专业版系统首先需要开启硬件虚拟化及Hyper V功能 才能进行Docker for Windows软件安装 如何开启硬件虚拟化 自行百度 可在任务栏中查看虚拟化是否开启 win10系统 打开控制面板 应用 程序和功能 开启Hy
  • postman——集合——执行集合——迭代运行集合

    网址 https learning getpostman com docs postman collection runs starting a collection run 开始收集运行 集合是一组请求 可以在对应的环境下作为一系列请求一
  • 前后端接口规范

    原文地址 https github com f2e journey treasure blob master api md 前后端接口规范 随着前后端分离越来越普遍 后端接口规范也就越来越重要了 一套良好的接口规范可以提升工作效率 减少沟通
  • Java-线程同步

    Java 线程同步 在Java中 我们通过同步机制 来解决线程的安全问题 实现线程安全的三种方法 1 同步代码块 synchronized 同步监视器 需要被同步的代码 说明 操作共享数据的代码 即为需要被同步的代码 gt 不能包含代码多了
  • 基于Python+Django的项目实战-信息安全领域中语义搜索引擎的设计与实现(附源码+论文)

    大家好 我是职场程序猿 感谢您阅读本文 欢迎一键三连哦 当前专栏 基于Python的毕业设计 精彩专栏推荐 微信小程序毕业设计 安卓app毕业设计 Java毕业设计 信息安全领域中语义搜索引擎的设计 django 演示 源码及论文下载地址
  • 前端复习HTML+CSS+JavaScript(必问面试题)

    前端复习 HTML 常见的几种图片格式以及他们之间的区别是什么 JPG 支持有损压缩 不支持透明 不支持动画 色彩还原度较好 PNG 不支持压缩 支持透明 半透明 不透明 不支持动画 GIF 支持有损压缩 不支持全透明 支持半透明 支持动画
  • Java 接入微信支付API V3 接口开发案例

    关于API v3 为了在保证支付安全的前提下 带给商户简单 一致且易用的开发体验 我们推出了全新的微信支付API v3 相较于之前的微信支付API 主要区别是 遵循统一的REST的设计风格 使用JSON作为数据交互的格式 不再使用XML 使
  • C02_02 Python笔记备份 变量

    author Liu Shao Ji encoding utf 8 字符串赋值到变量 再打变量打印出来 message Hello Python world print message 尝试在Hello world py中使用一个变量 在这
  • 如何在微信小程序中生成二维码:一个最简单的案例就让你明白

    使用weapp qrcode js 在 微信小程序 中 快速生成二维码 一 效果 二 具体步骤 代码 下载weapp qrcode代码 然后 将 dist 目录下的weapp qrcode esm js 复制到项目目录中 这里是utils目
  • 泰勒公式的展开细节解析(转载)

    转载自 https blog csdn net dog250 article details 76697167 上周写完了 三体 读后思考 泰勒展开 维度打击 黑暗森林 后收到一些邮件 进一步思考了关于泰勒展开的意义 也许我掌握的那些网络技
  • [4G&5G专题-5]:RRU 全面了解什么是4G+5G RF动态频谱共享?

    前言 建议在了解动态频谱DSS之前 前先了解 5G专题 4 RRU 全面了解什么是4G 5G RF静态射频共享 4G 5G专题 4 RRU 全面了解什么是4G 5G RF静态射频共享 文火冰糖的硅基工坊的博客 CSDN博客 rru设计原理与
  • 安卓在ecplise的问题

    Description Resource Path Location Type AndroidManifest xml file missing This is build issue Go to Menu in eclipse Proje
  • 【编程测试题】头条校招

    题目描述 头条的2017校招开始了 为了这次校招 我们组织了一个规模宏大的出题团队 每个出题人都出了一些有趣的题目 而我们现在想把这些题目组合成若干场考试出来 在选题之前 我们对题目进行了盲审 并定出了每道题的难度系统 一场考试包含3道开放
  • 用python实现简易控制台五子棋小游戏

    finish False 游戏是否结束 flagNum 1 当前下棋者标记 flagch 当前下棋者棋子 x 0 当前棋子的横坐标 y 0 当前棋子的纵坐标 print 033 1 37 41m 简易五子棋游戏 控制台版 033 0m 棋盘
  • python生成器的实现及原理

    1 迭代 一个接一个读取列表中的值 这个过程叫迭代 案例 mylist1 1 2 3 for v in mylist1 print v end print mylist2 x x for x in range 5 for v in myli
  • STM32F103(六)——定时器中断

    定时器原理与例程 1 定时器基本原理 1 1 三种定时器的区别 1 2 通用定时器的主要特点 1 3 通用定时器的3种计数器模式 1 4 通用定时器工作过程 1 5 定时器的内部时钟配置 2 定时器中断实验 2 1 常见库函数 2 2 定时
  • Notepad++正则命令全解 -- 小黑超细详解

    notepad 为文本编辑器工具 是windows的一款免费开源工具 功能有很多吧 还可以运行脚本 倒是也没有具体去研究 不过用起来挺方便的 记录一下平常使用会用到的吧 下载 Notepad GitHub 目录 举一个栗子 简单使用正则 正
  • Qt中多个单选按钮信号连接到同一个槽函数

    当多个类似信号需要连接到同一个槽函数时 在槽函数内需要对信号的来源进行判断 这里主要是采用sender 函数 此函数会返回信号来源的方向 让我们来看看效果 接下来是具体的代码 首先添加3个RadioButton 并且连接到同一个槽函数 QS

随机推荐

  • 软件工程——第13章软件项目管理知识点整理(完结)

    本专栏是博主个人笔记 主要目的是利用碎片化的时间来记忆软工知识点 特此声明 文章目录 1 管理的定义 2 软件项目管理地位 重要性
  • 【自学开发之旅】Flask-restful-Jinjia页面编写template-回顾(五)

    restful是web编程里重要的概念 一种接口规范也是一种接口设计风格 设计接口 要考虑 数据返回 接收数据的方式 url 方法 统一风格 rest 表现层状态转移 web 每一类数据 资源 资源通过http的动作来实现状态转移 GET
  • iframe 相互获取值

    链接 https www cnblogs com henuyuxiang p 7427155 html
  • Hp 笔记本开机不进入 grub 引导 ubuntu与windows选择界面

    我在预装了 windows 的机器上安装 ubuntu 每次想启动 ubuntu 时都需要按下 F9 才能进入引导选择界面 使用 ubuntu 的 efibootmgr 和 boot repair 等工具都不起作用 只是改变了 ubuntu
  • git常规操作

    场景一 从项目A的dev分支复制到项目B的dev分支上 1 将项目B clone 到本地 git clone b master 项目B的git地址 2 将项目A的git地址 添加至本地的remote git remote add upstr
  • 每月摘录--2023年7月

    企业 证监会最新消息 对蚂蚁集团及旗下机构处以罚款 含没收违法所得 71 23 亿元 并要求蚂蚁集团关停违规开展的 相互宝 业务 并依法补偿消费者利益 极客公园 7 月 7 日消息 据央行公布的行政处罚信息显示 今日 财付通支付科技有限公司
  • CoordinatorLayout的简单使用,android开发app的详细过程

    效果展示 代码展示
  • 军工重组

    http bar stockstar com p8448439 1 html 下周可千万别洗出来 2660到现在用了没多久就临近3000点 只要地产一起来马上就到3600了 地产现在不涨并不是不想涨 而是只要地产一起来马上就到3600 多数
  • VSCode安装教程最新,包教包会!

    一 VScode下载 1 进入VScode官网 官网地址 https code visualstudio com 点击 Download 进入下载 不要点击 Download for Windows Stable Build 否则它会自动帮
  • 编译Linux内核生成Image和System.map文件

    p span style font family 华文楷体 font size 12pt background color rgb 255 255 255 一直想琢磨琢磨Linux内核 便开始看 Linux内核完全注释 可是发现一头雾水 所
  • 用java实现计算器四则运算以及混合运算

    贴代码 本例测试是基于junit eclipse可安装对应 的java包 我用的是idea 添加插件即可 import java io BufferedReader import java io IOException import jav
  • eclipse 配置 C++

    前言 最近有项目需要c 但是c 自从离校那时就没碰过了 所以要重新学习下 因为曾经为了做自己的博客网站 学了java 下载了eclipse 也是在eclipse上写的博客网站的 所以对eclipse还是相对熟悉的 而且平时写代码都是用vim
  • android手势识别opencv,较为成熟的安卓项目--人面识别,手势识别向

    一 人脸识别 1 目标检测 目标追踪 人脸检测 人脸识别 效果 2 Android下使用OpenCV实现人脸检测 效果 3 人脸标识 效果 4 人脸检测 github https github com VernonVan Face 效果 主
  • Jmeter 中随机函数__Random 的使用

    前段时间 在做接口测试时 经常遇到接口参数需要输入不同的内容或者手机号码等 不允许输入重复的参数内容 比如不同的手机号码 那此时可以通过Random 随机函数来解决此问题 以前的文章有介绍过使用time函数来实现 详见 http blog
  • RuntimeError: Error(s) in loading state_dict for Net(让人心累的错误)

    RuntimeError Error s in loading state dict for Net size mismatch for classifier 4 weight xxxxxx 后面一堆错误 这个是model py 千万千万别
  • 【DL】第 6 章:语言建模

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 小程序跳转:云开发之h5跳小程序

    目录 前言 前提条件 注意 实现步骤 更多前端知识 前言 此方案是我在实际开发中的全部过程 因为我也是第一次做小程序的云开发 一开始根据这个文档就遇到了一些坑 所以在这里我做了更详细的步骤分解 非个人主体并且已认证的 微信认证 小程序 使用
  • tictoc例子理解10-12

    tictoc10 12 tictoc 10 几个模块连接 发送消息直到模块3收到消息 tictoc 11 新增信道定义 tictoc 12 双向连接信息简化定义 tictoc 10 几个模块连接 发送消息直到模块3收到消息 让我们用几个 n
  • 【机器学习】 Matlab 实现多种分类器(感知机、KNN、Logistic、最大熵、决策树、朴素贝叶斯)的二分类

    写在之前 这是本人的统计学习方法作业之一 老师要求一定要用Matlab编程 本人在此之前未曾大量使用Matlab 因此某些算法可能因为不知道函数或者包而走了弯路 代码高亮查了一下 没找到Matlab的所以用了C的 部分算法参考了某些算法的p
  • github中fork分支和pullrequest的最佳实践

    github中fork分支和pullrequest的最佳实践 github中fork分支和pullrequest的最佳实践 最近在参与一个国外的github开源项目 遇到自己fork了源库 一段时间之后 源库已经更新了一些内容 这样 自己f