git cherry-pick合并某个commit
1、使用方法及其作用
git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作(操作的对象是commit)。例如,假设我们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个v3.0中的功能到v2.0中,这里就可以使用cherry-pick了。
就是对已经存在的commit 进行 再次提交;
使用方法如下:
git cherry-pick <commit id>
查询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 0771a0c107dbf4c96806d22bbc6ef4c58dfe7075 Author: zhengcanrui <zhengcanrui@cvte.com> Date: Mon Aug 8 14:41:54 2016 +0800[modify] [what] commit的备注信息
其中0771a0c107dbf4c96806d22bbc6ef4c58dfe7075就是我们的commit id
注意:当执行完 cherry-pick 以后,将会 生成一个新的提交;这个新的提交的哈希值和原来的不同,但标识名 一样;(commit id会变)
2、实践
首先切换到你要添加commit的分支,如:你要将A分支上面的commit添加到B分支上面,我们可以要先切换到B分支上面。(注意:cherry-pick是一个本地的操作,假如你pull代码之后有人在A分支上有了新的commit,需要你先pull代码在进行cherry-pick,原因及其错误提示请见最后)。
git checkout B
将0771a0c107dbf4c96806d22bbc6ef4c58dfe7075这个commit(提交)合并到B分支上面。正常情况下,可以给出全部的commit id,也可以只给出前面的一段,只要你提交中没有这一段重复的就好,剩下的部分git会帮你填充。
git cherry-pick 0771a0c107dbf4c #将上面的commit id为0771a0c107dbf4c96806d22bbc6ef4c58dfe7075的提交添加到B分支上面
1.成功的情况
顺利的话,出现下面的情况证明你已经成功了
Finished one cherry-pick. # On branch B # Your branch is ahead of 'origin/B' by 1 commits.
2.有冲突的情况
下面是有文件冲突,和15a2b6c61927e5aed6718de89ad9dafba939a90b这个提交冲突
Automatic cherry-pick failed. After resolving the conflicts, mark the corrected paths with 'git add <paths>' or 'git rm <paths>' and commit the result with: git commit -c 15a2b6c61927e5aed6718de89ad9dafba939a90b
解决的冲突的方法也和普通的一样,手工检查。
1)查看冲突的文件
使用git status
both modified: app/models/user.rb
2)打开上面的那个文件,解决冲突。 执行add命令、执行commit命令,最后在提交即可了
3、遇到的一些错误
使用下面cherry-pick命令执行某个commit (编号为:77c6905dcf7f946cff594a69a33d12e22bedfae4)
git cherry-pick 77c6905dcf7f946cff594a69a33d12e22bedfae4
出现了如下的错误:
fatal: bad object 77c6905dcf7f946cff594a69a33d12e22bedfae4
场景及出现错误的原因:
我的情况是在B分支的同步A分支的一个commit,出现了如标题的错误。我是直接在web上看到A分支新提交的这个commit,然后我直接在本地的B分支中进行git cherry-pick xxx。就出现了这个问题。经过尝试问题是出在了我没有切到B分支pull一下。总结过来就是git cherry-pick是本地特性,本地要有这个commit才可以被git cherry-pick。
转载于:https://www.cnblogs.com/fnlingnzb-learner/p/9804063.html
git cherry-pick合并某个commit相关推荐
- git cherry pick
直接将选定的其他分支的commit,提交到该分支上 不建议使用 git rebase --onto 使用cherry pick代替 http://weblog.avp-ptr.de/20120928/ ...
- IDEA git cherry pick 简单使用
cherry pick的作用: 参考了一些博客, eg: 参考博客1 参考博客2 再做了个小案例后,我目前的理解是,cherry pick的作用是将一个分支的部分提交/历史提交,可以合并到另外一个分支 ...
- 【git cherry pick冲突】
修好了bug愉快的打算commit提交的时候 看到提示语句是can not commit changes due to unresolved conflicts 在Android Studio中寻找图 ...
- idea cherry pick 功能 git log 窗口 冲突conflict
git log 窗口 参考 source tree cherry pick, merge conflict merge conflict 冲突 <<<<<<< ...
- git分支合并、撤销;git修改已push的commit信息; git 撤销操作;
git分支合并 1.分支代码提交 2.git branch 查询本地分支 3.git checkout 分支名1 切换分支到需要合并的分支上 4.git merge 分支名2 //选择要合并到 分支 ...
- GIT合并特定commit
Git合并特定commits 到另一个分支 标签: gitmerge合并特定commit单个commit 2014-12-25 14:13 21570人阅读 评论(4) 收藏 举报 分类: Git(1 ...
- c++两个vector合并_这才是真正的 Git:分支合并
公众号关注 "GitHubDaily"设为 "星标",每天带你逛 GitHub! 本文作者:lzaneli,腾讯 TEG 前端开发工程师 "合并前文件 ...
- git 修改已提交的 commit
2019独角兽企业重金招聘Python工程师标准>>> 修改历史的操作,原理上都是通过变基(rebase)实现的. 因为发生了修改,则每个涉及的 commit 都会计算出新的 SHA ...
- 1.Cherry Pick与Create Patch的区别
Cherry Pick与Create Patch的区别 结论 实验 场景1:应用时无冲突 场景2: 应用时产生冲突 使用cherry pick 使用patch 场景3:产生冲突,并且有其他文件的变更 ...
- git mr 怎样合并部分_系统掌握Git之—分离头指针与合并操作
分离头指针 分离头指针表示我们在工作在没用分支的情况下,我们通过git log 打印日志,选择中间的一个commitId,然后进行checkout操作,git checkout 82fdac4baac ...
最新文章
- Android 利用方向传感器获得手机的相对角度
- linux 批量替换所有文件中包含的字符串
- 庞锋 OpenCV 视频 学习进度备忘
- 搭建解析内网 linux_Linux 搭建ngrok内网穿透
- SWT的UI线程和非UI线程
- 使用logdashboard进行可视化的日志追踪
- pyinstaller安装失败解决
- 想学 Python?那这套教程再适合你不过了!!
- ZZULIOJ 1052:数列求和4
- java就业班学什么呀_传智播客JAVA就业班学习心得
- apache virtualhost 访问不了_六星教育:你为什么当不了架构师?除技术,你还需具备这些能力...
- 龙虎斗 详解(C++)
- ios 获取最后一个cell_ios – UICollectionView estimatedItemSize – 最后一个单元格未对齐...
- YOLOv4原文翻译 - v4它终于来了!
- NBIOT透传模块在智能公寓锁上的使用2
- Android 適配器的回調
- 伪概念催生人工智能行业泡沫 2018年或迎大洗牌
- selenium八大元素定位方法
- 搭建nlp_server服务器
- 100种活动促销方案
热门文章
- 提防最近一些公司的小九九!
- ssh java_java中的SSH的各自作用是什么-百度经验
- Ubuntu 网速显示,ssh配置
- 【luogu T34117 打油门】 题解
- Codeforces 988D Points and Powers of Two ( 思维 || 二的幂特点 )
- Js判断当前浏览者的操作系统
- asp.net membership 配置错误
- BZOJ 1715: [Usaco2006 Dec]Wormholes 虫洞 DFS版SPFA判负环
- SpringData JPA整理
- 【winfrom】Excel文件加载