前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Git】Git 分支管理 ( 使用 git cherry-pick 命令提取提交记录应用于当前分支 | 创建新分支应用某个提交 | git cherry-pick 冲突处理 )

【Git】Git 分支管理 ( 使用 git cherry-pick 命令提取提交记录应用于当前分支 | 创建新分支应用某个提交 | git cherry-pick 冲突处理 )

作者头像
韩曙亮
发布2023-03-30 09:15:05
2.3K0
发布2023-03-30 09:15:05
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、环境准备


git cherry-pick 命令的作用是 将指定的 一个或若干个 提交记录 , 应用与当前的分支 ;

创建一个 dev 分支 , 然后在该分支中 , 编辑 file1.txt 文件 , 分别添加

4

行 文本 , 每行都提交一次 ;

在这里插入图片描述
在这里插入图片描述

执行

代码语言:javascript
复制
git reflog

查看

4

次提交的哈希码 :

代码语言:javascript
复制
D:\Git\git-learning-course>git reflog
29206c6 (HEAD -> dev) HEAD@{0}: commit: dev4
31914ab HEAD@{1}: commit: dev3
cc5fe50 HEAD@{2}: commit: dev2
f12e2d3 HEAD@{3}: commit: dev1
2bd4156 (origin/master, origin/HEAD, master) HEAD@{4}: checkout: moving from master to dev
2bd4156 (origin/master, origin/HEAD, master) HEAD@{5}: clone: from https://codechina.csdn.net/han12020121/git-learning-course
在这里插入图片描述
在这里插入图片描述

二、创建新分支应用 dev2 提交


执行

代码语言:javascript
复制
git switch master

命令 , 切换换到 master 分支 , 将 dev 分支中的 dev1 提交 , 作为当前分支的最新的提交内容 ;

代码语言:javascript
复制
f12e2d3 HEAD@{3}: commit: dev1

执行

代码语言:javascript
复制
git cherry-pick f12e2d3

命令 , 正式将 dev1 提交作为当前 master 分支的内容 ; 该操作没有冲突 , 可以直接执行 ;

代码语言:javascript
复制
D:\Git\git-learning-course>git switch master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

D:\Git\git-learning-course>
D:\Git\git-learning-course>git cherry-pick f12e2d3
[master 2321849] dev1
 Date: Thu Dec 9 20:58:46 2021 +0800
 1 file changed, 3 insertions(+), 1 deletion(-)

D:\Git\git-learning-course>
在这里插入图片描述
在这里插入图片描述

三、git cherry-pick 冲突处理


在 dev 分支中 , 执行

代码语言:javascript
复制
git switch -c dev_1

命令 , 直接基于 dev 分支创建新的分支 dev_1 , 注意此时的 dev 分支有

4

个提交 , dev_1 也有

4

个提交 ;

执行

代码语言:javascript
复制
git cherry-pick f12e2d3

命令 , 将 f12e2d3 提交作为当前 dev_1 分支的当前提交内容 , 此处出现了冲突 ;

f12e2d3 提交记录的内容 :

代码语言:javascript
复制
f12e2d3 HEAD@{3}: commit: dev1

执行过程 :

代码语言:javascript
复制
D:\Git\git-learning-course>git cherry-pick f12e2d3
Auto-merging file1.txt
CONFLICT (content): Merge conflict in file1.txt
error: could not apply f12e2d3... dev1
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
在这里插入图片描述
在这里插入图片描述

冲突文件内容 :

代码语言:javascript
复制
hello world
hello world

git branch dev

<<<<<<< HEAD
dev

dev2

dev3

dev4
=======
dev
>>>>>>> f12e2d3 (dev1)
在这里插入图片描述
在这里插入图片描述

手动解决冲突 , 然后编辑为 :

代码语言:javascript
复制
hello world
hello world

git branch dev

dev

先执行

代码语言:javascript
复制
git add .

命令, 提交该文件到暂存区 , 然后执行

代码语言:javascript
复制
git cherry-pick --continue

命令 , 继续执行 git cherry-pick 命令后续操作 , 期间会弹出 vim 编辑器 , 输入提交内容 ;

代码语言:javascript
复制
D:\Git\git-learning-course>git cherry-pick --continue
[dev_1 301c619] dev1
 Date: Thu Dec 9 20:58:46 2021 +0800
 1 file changed, 6 deletions(-)

D:\Git\git-learning-course>
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、环境准备
  • 二、创建新分支应用 dev2 提交
  • 三、git cherry-pick 冲突处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档