博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git cherry-pick 的使用
阅读量:6358 次
发布时间:2019-06-23

本文共 1707 字,大约阅读时间需要 5 分钟。

1、使用方法及其作用

  git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作(操作的对象是commit)。例如,假设我们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个v3.0中的功能到v2.0中,这里就可以使用cherry-pick了。

  就是对已经存在的commit 进行 再次提交;

使用方法如下:

git cherry-pick 

查询commit id 的查询可以使用git log查询(查询版本的历史),最简单的语法如下:

git log 

详细的git log 语法如下:

  git log [<options>] [<since>..<until>] [[--] <path>...]

      主要参数选项如下:

             -p:按补丁显示每个更新间的差异

            --stat:显示每次更新的修改文件的统计信息

            --shortstat:只显示--stat中最后的行数添加修改删除统计

            --name-only:尽在已修改的提交信息后显示文件清单

            --name-status:显示新增、修改和删除的文件清单

            --abbrev-commit:仅显示SHA-1的前几个字符,而非所有的40个字符

            --relative-date:使用较短的相对时间显示(例如:"two weeks ago")

            --graph:显示ASCII图形表示的分支合并历史

            --pretty:使用其他格式显示历史提交信息

结果大概如下:

commit 0771a0c107dbf4c96806d22bbc6ef4c58dfe7075Author: zhengcanrui 
Date: Mon Aug 8 14:41:54 2016 +0800 [modify] [what] commit的备注信息 

  其中0771a0c107dbf4c96806d22bbc6ef4c58dfe7075就是我们的commit id

  注意:当执行完 cherry-pick 以后,将会 生成一个新的提交;这个新的提交的哈希值和原来的不同,但标识名 一样;(commit id会变)

应用背景

 

假设我们需要将dev_01上的两个commit 合并到dev_02上,两个commit的commit id 分别如下:

20c2f506d789bb9f041050dc2c1e954fa3fb6910

2633961a16b0dda7b767b9264662223a2874dfa90
那我们可以这样写:
git cherry-pick
20c2f506d789bb9f041050dc2c1e954fa3fb6910
2633961a16b0dda7b767b9264662223a2874dfa9
多个commit-hash使用空格分割, commit-hash最好按提交时间先后排列, 即最先提交的commit放在前面.

注意:上面这条cherry-pick命令每拣选一个commit就会提交一次生成一个新的commit id。 如果我们想让每个commit 拣选后暂缓提交,等到所有commit都拣选完成后,自己手动commit,应该怎么办呢?答案是用-n 选项:

git cherry-pick -n

20c2f506d789bb9f041050dc2c1e954fa3fb6910
2633961a16b0dda7b767b9264662223a2874dfa9
这样,当git cherry-up后,这两个commit上的更改就被merge到本地的dev_02分支了,此时这些更改就像是你再dev_02分支上自己手动添加的一样,注意此时这些更改并没有被提交。
执行git status 会列出这些改动。

此时,就可以按正常流程(git commit, git push)来提交改动了

转载于:https://www.cnblogs.com/skaarl/p/10366807.html

你可能感兴趣的文章
git pull遇到的问题
查看>>
eclipse下maven spring项目环境配置
查看>>
无缝轮播
查看>>
CTS失败项分析(2)android.telephony.cts.VisualVoicemailServiceTest#testFilter_data
查看>>
三分钟,轻松了解Dapp
查看>>
GMQ交易平台满足不同客户群体的多种投资需求
查看>>
大数据开发如何入门你必须知道这些
查看>>
关于js(es5)如何优雅地创建对象
查看>>
阿里云前端周刊 - 第 28 期
查看>>
iOS 主队列同步造成死锁的原因
查看>>
es6 下比较对象是否有修改的简要方法
查看>>
windows安装mysql
查看>>
你还在看《深入理解Java虚拟机》的运行时数据模型吗?
查看>>
RIS,创建 React 应用的新选择
查看>>
线性结构上的动态规划--算法竞赛入门经典笔记
查看>>
面试官:你使用webpack时手写过loader,分离过模块吗?
查看>>
Ubuntu 16.04系统下 对OpenJDK编译好的Hotspot 进行调试
查看>>
00-利用思维导图梳理JavaSE基础知识-持续更新中!
查看>>
java中三种注释及其实际应用的意义
查看>>
【三石jQuery视频教程】01.图片循环展示
查看>>