TortoiseGit 入门指南13:拣选

对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。

这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用 合并(merge)。另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 拣选(Cherry pick)。

通俗的讲 拣选 直接把某一次 提交 (commit)拿过来,作为最新一次提交,就像是直接摘了一颗樱桃加在链表最前面,所以叫Cherry pick (拣选)。

如果你感兴趣,可以从 Git 的底层来了解下拣选,如果不感兴趣,可以忽略这些内容。

git cherry-pick <commitHash>

该命令将指定的提交 commitHash 应用于当前分支。这会在当前分支产生一个新的提交,当然它们的哈希值会不一样。

举例来说,代码仓库有 masterfeature 两个分支。

a - b - c - d   Master\e - f - g  Feature

现在将提交 f 应用到 master 分支。

# 切换到 master 分支
$ git checkout master# 拣选 操作
$ git cherry-pick f

上面的操作完成以后,代码库就变成了下面的样子。

a - b - c - d - f   Master\e - f - g      Feature

从上面可以看到,master分支的末尾增加了一个提交 f

git cherry-pick 命令的参数,不一定是提交的哈希值,分支名也是可以的,表示转移该分支的最新提交。

$ git cherry-pick feature

上面代码表示将 feature 分支的最近一次提交,转移到当前分支。

拣选的一般步骤

test-合并指定提交 分支中的某个提交应用到 master 分支的步骤如下:

  1. 切换到 master 分支:鼠标右键 -Tortoise Git - Switch/Checkout...,选择 master 分支。

  2. 打开 提交日志对话框,切换到 test-合并指定提交 分支,选中要 拣选 的某个提交或多个提交,然后右击鼠标弹出右键菜单,选择 Cherry Pick this commit...(选中一个提交)或 Cherry Pick select commits...(选中多个提交)。

在这里插入图片描述

  1. 这里选中 分支提交2,右击鼠标弹出右键菜单,选择 Cherry Pick this commit... 弹出 拣选 对话框。

在这里插入图片描述

拣选对话框与变基(Rebase)对话框很像。顶部窗口中每行显示一个选中的要 cherry-pick 的提交。顶部窗口下面的按钮控制操作,比如选取(Pick)提交、编辑、跳过等,还可以选择多个提交的顺序。

选中一行提交后,在底部窗口将显示受影响的文件。

  1. 选中要拣选的提交,单击 Continue 按钮。
  2. 如果没有冲突,在弹出的界面中按下 Done 按钮完成 拣选 操作。

注意:拣选可能产生合并冲突,在下面的 处理拣选冲突 中介绍如何解决冲突。

处理拣选冲突

1.在 拣选的一般步骤 一节中,最后的合并可能会有冲突。如果有冲突,在 Cherry Pick 对话框的底部窗口中会显示出冲突的文件:

在这里插入图片描述

  1. TortoiseGit会使用特定的图标标示出冲突的文件:

    在这里插入图片描述

  2. 选中冲突文件,在右键菜单中选择 TortoiseGit - Edit Conflicts 启动外部合并工具/冲突编辑器手动解决冲突。

在这里插入图片描述
这里 CHERRY_PICK_HEAD(77c84bf9) 是我们要合并的源文件,与 Base 文件相比较可以看出新增加了一个内容为 “分支提交5” 的提交,这个提交是我们要拣选到主分支( HEAD 指向的文件)的提交。
4. 手动编辑冲突,需要把 “分支提交5” 内容拷贝到主分支(HEAD指向的文件),然后保存:

在这里插入图片描述
5. 手动修改冲突文件后,执行 TortoiseGit - Resolve... 菜单项,在弹出的对话框中点击 OK按钮,将刚刚修改的冲突文件标记为 冲突已解决(resolve)
在这里插入图片描述
7. 标记为冲突已解决后,TortoiseGit弹出下一步操作界面。正常的合并冲突流程需要做一次提交,填写本次冲突解决的信息,但我们这里是拣选合并,并不需要手动做一次提交,所以这里点击OK按钮,而不要点Commit...按钮!(这是与普通合并冲击解决流程的唯一区别)。

在这里插入图片描述
8. 回到拣选对话框,在底部窗口按下 F5 快捷键刷新显示内容,可以看到文件已经不是冲突状态。这时按下 Commit 按钮,让 TortoiseGit 自动做一次提交。注意这次提交并不需要你填写什么信息,TortoiseGit 会把拣选的提交信息搬运到这次提交中。

在这里插入图片描述
8. 自动完成一次提交后,按下 Done 按钮完成 拣选 操作。

在这里插入图片描述









读后有收获,资助博主养娃 - 千金难买知识,但可以买好多奶粉 (〃‘▽’〃)
千金难买知识,但可以买好多奶粉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 11以下DialogFragment里弹出PopWindow显示问题

最近在写UI的时候发现一个非常有意思的事情&#xff0c;Android 11以下在DialogFragment里面弹出PopWindow&#xff0c;最终会被截取。 尝试过一些方法以后将解决方案做一个记录&#xff1a; mPopWindow.setClippingEnabled(false); 应该是Android 11后这里默认设置成了true…

Rust学习-构建命令行程序

Rust 的运行速度、安全性、单二进制文件输出和跨平台支持使其成为创建命令行程序的绝佳选择 本文以实现一个minigrep为例&#xff0c;展开对之前学习的回归 初版 接收命令行参数并打印文件内容 // 当所需函数嵌套了多于一层模块时&#xff0c;通常将父模块引入作用域 // std…

[JVM] 2. 类加载子系统(1)-- 内存结构、类加载子系统概述

一、内存结构 类加载子系统的职责是&#xff1a;加载class文件到内存中。 完整的内存结构如下&#xff1a; 二、类加载过程 类加载过程总体分为Loading&#xff08;加载&#xff09;、Linking&#xff08;链接&#xff09;、Initialization&#xff08;初始化&#xff09;三…

Mars3d采用ellipsoid球实现模拟地球旋转效果

1.Mars3d采用ellipsoid球实现模拟地球旋转效果 2.开始自选装之后&#xff0c;模型一直闪烁 http://mars3d.cn/editor-vue.html?idgraphic/entity/ellipsoid 3.相关代码&#xff1a; import * as mars3d from "mars3d"export let map // mars3d.Map三维地图对象 …

深入浅出如何通过API瞬间搭建亿万商品外贸代购系统PHP系统

什么是淘宝代购 淘宝代购是近年兴起的一种购物模式&#xff0c;是帮国外客户购买中国商品。主要是通过万邦 科技的外贸代购系统&#xff0c;把淘宝、天猫等电商平台的全站商品通过API 接入到你的网站 上&#xff0c;瞬间就可以架设一个有数亿产品的大型网上商城&#xff0c;而…

2023年测试之路,从功能测试进阶测试开发工程师,突破内卷...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 测试开发工程师到…

Redis可视化工具(Redis Desktop Manager)

redis是我们平时开发工作中经常用到的非关系型数据库&#xff0c;常用于做数据缓存&#xff0c;分布式锁等。 为了更方便的使用redi&#xff0c;这里给大家推荐一款可视化工具&#xff1a;Redis Desktop Manager。 1.下载与安装 直接到gihub下载&#xff0c;地址 Release 0.…

剑指 Offer 59 - I. 滑动窗口的最大值

题目介绍 给定一个数组 nums 和滑动窗口的大小 k&#xff0c;请找出所有滑动窗口里的最大值。 示例: 输入: nums [1,3,-1,-3,5,3,6,7], 和 k 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 …

uni-app的H5版本下载跨域问题

前端能正常访问图片&#xff0c;但无法下载 因为路径不经过业务代码&#xff0c;所以需要在nginx配置跨域 代码&#xff1a; add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods GET, POST, OPTIONS; add_header Access-Control-Allow-H…

基于simulink的DPLL仿真笔记

该笔记主要用于本人思路整理与记录 本设计运用的是电荷泵一阶环路滤波器&#xff0c;二阶三阶则在此基础上举一反三&#xff0c;以后如有机会会慢慢补全 文章目录 一.仿真模型PS&#xff08;题外话&#xff09; 二.仿真结果三.环路滤波器分析1. 环路滤波器对比LPF2. 环路滤波器…

Shikra:新一代多模态大语言模型,理解指向,说出坐标

“ Shikra&#xff1a;解锁多模态语言模型参考对话的魔法” Shikra和用户的对话案例 在人类的日常交流中&#xff0c;经常会关注场景中的不同区域或物体&#xff0c;双方都可以通过说话并指向这些区域来进行高效的信息交换。我们将这种对话模式称为参考对话&#xff08;Referen…

等保协议概要

一、等级划分 《信息安全等级保护管理办法》将信息系统的安全保护等级分为以下五级: 第一级,信息系统受到破坏后,会对公民、法人和其他组织的合法权益造成损害,但不损害国家安全、社会秩序和公共利益。 第一级信息系统运营、使用单位应当依据国家有关管理规范和技术标准进…

uniapp自定义头部,计算状态栏和导航栏高度超简单三步

效果图 1.pages.json 页面给要自定义头部的页面加入一行代码 "navigationStyle":"custom" {"path": "pages/index/index","style": {"navigationBarTitleText": "","navigationStyle":"…

Gin+Gorm练手小项目bubble清单企业级结构剖析

概述 本项目来源于Qimi老师的小清单项目——基于gingorm开发的练手小项目&#xff0c;通过该项目可初识go web开发该有的姿势。笔者对代码有些许修改&#xff0c;以下是项目成功运行的截图&#xff0c;主要功能有添加&#xff0c;删除&#xff0c;确认&#xff0c;查看待办事项…

05 信号与槽机制

信号&#xff08;Signal&#xff09;&#xff1a; 信号的本质是事件&#xff0c;例如鼠标点击&#xff0c;窗口刷新&#xff0c;键盘输入等 槽&#xff08;Slot&#xff09;&#xff1a; 槽的本质是信号对应的函数&#xff0c;可以有参&#xff0c;可以发生重载 信号与槽机制…

有哪些记事本app可以用来整理个人笔记?

我总是在思考一个问题&#xff0c;为什么现在越来越多的人选择使用记事本app&#xff1f;它们相比传统笔记本&#xff0c;又有什么吸引人的地方呢&#xff1f;这其实并不难理解。因为&#xff0c;记事本app不仅可以让我们及时记录重要信息&#xff0c;还能对这些信息进行系统、…

Django实现接口自动化平台(九)环境envs序列化器及视图【持续更新中】

相关文章&#xff1a; Django实现接口自动化平台&#xff08;八&#xff09;测试报告reports序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解&#xff0c;查看本章内容时&#xff0c;要结合整体项目代码来看&#xff1a; python django vue …

mac 下 geoserver 安装

一、去官网下载geoserver https://geoserver.org/ 选择一个版本&#xff0c;然后点进去 二、需要配置java环境和设置geoserver 环境变量 1&#xff09;、java 环境安装 Java Downloads | Oracle 中国 2&#xff09;、环境变量设置 1.打开终端&#xff1a;command 空格键 2…

Python自动获取字母站视频

如果有疑问的话可以在我的谈论群&#xff1a;706128290 来找我 目录 前言 二、编写代码 1.引入库 2.编写主类 3. 自动获取cookies值和生成headers 4.获取命令行参数 运行效果 前言 browser_cookie3 第三方模块 browser_cookie3是browser_cookie模块的分支&#xff0c;…

jupyter notebook更换虚拟环境(内核)

jupyter notebook更换虚拟环境&#xff08;内核&#xff09; 创建一个新的虚拟环境 # stk_env 虚拟环境的名字&#xff0c;任取。 conda create -n stkenv python3.9激活虚拟环境 conda activate stkenv安装ipykernel # 为该虚拟环境&#xff0c;安装内核。 conda install -c a…