TortoiseGit 入门指南13:拣选

news2024/12/24 9:13:26

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

这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用 合并(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.coloradmin.cn/o/772439.html

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

相关文章

目标检测算法:FPN思想解读

目标检测算法&#xff1a;FPN思想解读 说明 ​ FPN算法一种方法/思想&#xff0c;在许多的模型架构中都经常采用&#xff0c;也是提高模型精度的重要方法。 免责申明 ​ 有误写/错写/错误观点/错误解读&#xff0c;或者大家有其它见解&#xff0c;都可以在评论区指出&#xff0…

Linux中常用的指令

ls ls [选项] [目录或文件] 功能&#xff1a;对于目录&#xff0c;列出该目录下所有的子目录和文件&#xff1b;对于文件&#xff0c;列出该文件的文件名和其他属性 常用选项&#xff1a; -a:列出目录下的所有文件&#xff0c;包括以.开头的隐藏文件 -l:列出文件的详细信息。…

想要在独立站上赚钱,需要考虑哪些关键点?

我们都知道&#xff0c;没有什么工作是简单的&#xff0c;但是做得好的话&#xff0c;独立站确实是非常赚钱的。现在建立一个网站非常容易&#xff0c;你需要的花费也不高。 刚好后台也收到很多小伙伴问我独立站的盈利模式&#xff1f;怎么做才能赚钱&#xff1f;要在独立站上…

Django中使用反向关系名称(related_name)解决由“多对多”关系引起的字段名字冲突问题引起的迁移命令报错。

当在模型中为关系字段添加了related_name参数后&#xff0c;您可以使用该参数指定的名称来引用反向关系。下面是一个简单的例子来说明如何引用反向关系。 假设您有以下两个模型&#xff1a; from django.db import modelsclass Author(models.Model):name models.CharField(…

Ceph 服务的运用

目录 一、资源池 pool 管理 1.创建一个 Pool 资源池 2.查看集群 Pool 信息 3.查看资源池副本的数量 4.查看 PG 和 PGP 数量 5.修改 pg_num 和 pgp_num 的数量为 128 6.修改 Pool 副本数量为 2 7.修改默认副本数为 2 8.删除 Pool 资源池 8.1修改配置文件 8.2推送 ceph…

10.1寸三防加固平板电脑Windows工业平板

当前&#xff0c;移动计算设备的需求日益增长&#xff0c;特别是在现场工作和移动任务中的应用。为了满足这一需求&#xff0c;三防加固平板电脑SP-Q19采用了整机一体成型的设计&#xff0c;无合成拼接&#xff0c;使得长侧边的直线条与短侧边的圆弧形巧妙融合。同时&#xff0…

【wxWidgets】使用布局控件进行窗口布局

使用布局控件进行窗口布局 窗口布局基础 为了在各种环境中都能使窗口拥有合适的位置和大小&#xff0c;可能需要在OnSize事件中计算每一个窗口的大小并设置新位置&#xff0c;当然使用窗口布局控件可以更方便地实现 如果选择使用布局控件&#xff0c;可以通过自己编写或者使用…

创新创业项目申报管理系统vue+nodejs+mysql

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 本站是一个B/S模式系统&#xff0c;采用nodejs框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界…

详解UDP协议

在讲本篇文章之前&#xff0c;给读者介绍两个指令 1.netstat:用来查看网络状态的重要工具 语法&#xff1a;netstat [选项] n 拒绝显示别名&#xff0c;能显示数字的全部转化成数字l 仅列出有在 Listen (监听) 的服務状态p 显示建立相关链接的程序名t (tcp)仅显示tcp相关选项…

JDK、JRE、JVM之间的关系是什么?

目录 JVM、JRE、JDK的关系&#xff1f; JDK、JRE、JVM都是什么&#xff1f; JVM JRE JDK JVM、JRE、JDK的关系&#xff1f; 三者包含关系&#xff1a; JDK>JRE>JVM JDK、JRE、JVM都是什么&#xff1f; jdk&#xff1a;是用于java开发的最小环境 包括&#xff1a;ja…

C++牛客WebServer项目学习笔记一

1.Linux系统命令&#xff1a; sudo apt install softname # sudo 管理员权限&#xff1b;apt 安装软件命令&#xff1b;ps -ef | grep ssh # ps 查看进程命令&#xff1b;| 管道符&#xff1b;grep 过滤出&#xff08;过滤出ssh关键词&#xff09;&#xff1b; 3.Ctrl滚动鼠标…

抓 https 报文新方案 -Magisk+LSPosed,来试试吧

关于如何抓取Android端https报文&#xff0c;在之前一篇文章中有介绍可以通过VitualXposedJustTrustMe模块禁用SSL验证&#xff0c;这样可以抓取到https&#xff0c;还是有一些同学反馈以下的一些问题&#xff1a; App在低版本的Android上不兼容&#xff0c;需要用高版本的And…

leetcode:1470. 重新排列数组(python3解法)

难度&#xff1a;简单 给你一个数组 nums &#xff0c;数组中有 2n 个元素&#xff0c;按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列。 请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排列&#xff0c;返回重排后的数组。 示例 1&#xff1a; 输入&#xff1a;nums [2,5,1,3,4…

SQL-每日一题【607.销售员】

题目 表: SalesPerson 表: Company 表: Orders 编写一个SQL查询&#xff0c;报告没有任何与名为 “RED” 的公司相关的订单的所有销售人员的姓名。 以 任意顺序 返回结果表。 查询结果格式如下所示。 示例&#xff1a; 解题思路 1.我们可以用子查询来解决这道题&#xff0c;…

Tabby - 本地化AI代码自动补全 - Windows10

参考&#xff1a; https://github.com/TabbyML/tabby 安装winget&#xff0c;方便命令行安装git 微软商店&#xff0c;搜索winget&#xff0c;安装App Installer PS C:\Windows\system32> winget install --id Git.Git -e --source winget Found Git [Git.Git] Version 2…

旅游卡加盟代理合伙人模式软件开发

旅游卡加盟代理合伙人模式是近年来逐渐兴起的一种旅游产业发展模式&#xff0c;它通过将旅游卡加盟商与代理商紧密结合&#xff0c;实现资源共享、风险共担、合作共赢的目标。而软件开发作为旅游卡加盟代理合伙人模式的重要技术支持&#xff0c;对于该模式的实施和发展起着至关…

Prometheus节点监控及hadoop集群监控

话不多说,先看效果 1.监控组件Prometheus 1.1上传Prometheus包 [root@bigdb01 ~]# rsync root@172.16.1.247/data/fan/install/native/09.prometheus/jmx_prometheus_javaagent-0.19.0.jar /opt/software/1.2 解压 [root@bigdb01 ~]# mkdir /opt/module/monitoring [roo…

金融银行测试面试题:网上银行转账是怎么测的?

前言 这段时间收到好多粉丝的留言说想求一份金融银行相关的测试面试题&#xff0c;所以我花了不少时间给大家整理了一份&#xff0c;今天分享给需要的朋友们&#xff0c;也希望对你们有所帮助。 1、网上银行转账是怎么测的&#xff0c;设计一下测试用例。 回答思路&#xff1…

【Vue】day02-Vue基础入门

目录 day02 一、今日学习目标 1.指令补充 2.computed计算属性 3.watch侦听器 4.综合案例 &#xff08;演示&#xff09; 二、指令修饰符 1.什么是指令修饰符&#xff1f; 2.按键修饰符 3.v-model修饰符 4.事件修饰符 三、v-bind对样式控制的增强-操作class 1.语法…

目标检测数据集标注工具Labelimg安装与使用

一、labelimg是什么 labelimg是一款开源的图像标注工具&#xff0c;标签可用于分类和目标检测&#xff0c;其注释以 PASCAL VOC格式保存为XML文件&#xff0c;这是ImageNet使用的格式。此外&#xff0c;它还支持 COCO数据集格式。 二、安装labelimg 打开cmd并输入以下命令 …