标签:查询 relative 版本 错误 推荐一个 简单 好用 行操作 rap
git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作(操作的对象是commit)。
1、使用方法&需求
场景:
假设我们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个v3.0中的功能到v2.0中,这里就可以使用cherry-pick了。
使用方法:
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 3b64693a060a8cf07c66a9545ef969d52f9cbe8c
Author: domi.song <domi.song@cloudwise.com>
Date: Tue Jun 25 22:07:49 2019 +0800
Fixed #TSB-11111 提交内容
其中3b64693a060a8cf07c66a9545ef969d52f9cbe8c就是我们的commit id;
注意:当执行完 cherry-pick 以后,将会 生成一个新的提交;这个新的提交的哈希值和原来的不同,但标识名 一样;(commit id会变)
2、实例参考
首先切换到你要添加commit的分支,如:你要将A分支上面的commit添加到B分支上面,我们可以要先切换到B分支上面。(注意:cherry-pick是一个本地的操作,假如你pull代码之后有人在A分支上有了新的commit,需要你先pull代码在进行cherry-pick,原因及其错误提示请见最后)。
git checkout B
将3b64693a060a8cf07c66a9545ef969d52f9cbe8c这个commit(提交)合并到B分支上面。正常情况下,可以给出全部的commit id,也可以只给出前面的一段,只要你提交中没有这一段重复的就好,剩下的部分git会帮你填充。
git cherry-pick 3b64693a060a8cf07c6 #将上面的commit id为3b64693a060a8cf07c66a9545ef969d52f9cbe8c的提交添加到B分支上面
结果:
1.成功的情况
顺利的话,出现下面的情况证明你已经成功了
DomideMacBook-Pro: songpengju$ git cherry-pick 583f3b1201999aaaf0728ad73dcb132c00744531 [biguiyuan-v6.5-report-browser-mobile-new 8fd59f0c5c] Fixed #TSB-11111 XXXXXXXX Author: bert <domi.song@yunzhihui.com> Date: Wed Jun 26 19:08:49 2019 +0800 1 file changed, 10 insertions(+)
2.有冲突的情况
下面是有文件冲突,和 XXXXXXXXXXXXXXXXXXXX 这个提交冲突,如下图:
解决的冲突的方法也和普通的一样,手工检查。
1)查看冲突的文件
使用git status
2)打开上面的那个文件,解决冲突。 执行add命令、执行commit命令,最后在提交即可了
此处推荐一个git可视化工具--GitKraKen,比较好用,亲测
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。
致谢:感谢您的阅读!有错误请加以纠正,有其他欠缺的东西请不吝赐教,谢谢!
PS:参考连接:https://www.cnblogs.com/0201zcr/p/5752771.html
标签:查询 relative 版本 错误 推荐一个 简单 好用 行操作 rap
原文地址:https://www.cnblogs.com/domisong/p/12581399.html