首页 > 其他分享 >git cherry-pick的使用

git cherry-pick的使用

时间:2023-07-22 12:22:20浏览次数:31  
标签:git cherry 提交 pick commit 分支

git cherry-pick <commit id>

是用来将其他某个分支上的某次commit复制到当前分支

假设你的项目提交历史如下:(箭头相当于一个指针,表示当前这个commit是基于指向的那个commit修改的,HEAD也是一个这样的指针)

如果你希望将提交 e43a6 拉取到 master 分支,你可以执行:

$ git checkout master  # 第一步:想要将某次commit应用于master,则先切换到该分支
$ git cherry-pick e43a6  # 第二步:将ruby_client分支上的这个commit pick到当前分支(当然需要提前知道这个commit id)
Finished one cherry-pick.
[master]: created a0a41a9: "More friendly message when locking the index
fails."
 3 files changed, 17 insertions(+), 3 deletions(-)

这样会拉取和 e43a6 相同的更改,但是因为应用的日期不同,你会得到一个新的提交 SHA-1 值。 现在你的历史会变成这样:

 

现在你可以删除这个特性分支(ruby_client),并丢弃不想拉入的提交(5ddae)。

需要说明的是,提取某次提交的“补丁”,这个补丁是基于其父提交的。也就是说,如果这个commit所在的分支在这个commit之前的父代码与当前分支当前的代码不一致,则有可能产生冲突。

例如下面的master比dev分支在同一个地方代码不一致,少了一次提交:

而dev分支上多了一次提交(多了注释more comment):

 

现在我们想把214ae这次提交pick到master,则会产生冲突:

需要手动解决冲突后再git add/git commit来将这次cherry-pick提交上去

 

标签:git,cherry,提交,pick,commit,分支
From: https://www.cnblogs.com/tan-wm/p/17573152.html

相关文章

  • git push origin HEAD:refs/for/master 的意思(转)
    原文:https://blog.csdn.net/u010312474/article/details/1079156941.gitpush<远程主机名><本地分支名>:<远程分支名>例如gitpushoriginmaster:refs/for/master是将本地的master分支推送到远程主机origin上的对应master分支origin是远程主机名,第一个master是本地分支名,第......
  • 【大联盟】20230626 集查并(dsu) 题解 AT_toyota2023spring_final_g 【Git Gud】
    【大联盟】20230626集查并(dsu)题解AT_toyota2023spring_final_g【GitGud】zyx/bx题目描述here题解由于这场出了T2、验了T3(顺序是反的),所以赛时一直在想这个题,不过很遗憾不会。相当有意思的题。考虑合并两个点\(x,y\)时,对以后产生的贡献为\(\max\{f_x,f_y\}\),\(f_x......
  • 同一台电脑配置公司git和个人git
    https://www.cnblogs.com/hezhi/p/10317642.html照着这篇文章的第二章做就行,亲测有效。建议有条件的情况下专门配一台公司电脑,避免泄露公司代码。......
  • 在vscode中配置git
    1.配置VsCode的Git地址1.1.打开“文件”-“首选项”-“设置” 搜索git.path  打开setting.json1.2.添加“git.path”:“Git实际安装地址”VsCode中git路径的设置(window系统)---参考文章https://code84.com/767977.html2.在vscode中,默认提交到master分支2.1.有文件更改......
  • [Joplin] git实现Joplin多PC端加密文件同步
    git实现Joplin多PC端加密文件同步场景一些笔记虽然不是什么重要的东西,但是需要加密一下同时也要在不同的PC端进行编辑(上班+下班)方案通过Joplin加密文件内容,将加密文件同步到本地Filesystem再通过git上传到代码托管平台步骤前提:已有项目仓库,会用......
  • gitlab的CICD中自定义钉钉发送内容(通过sh脚本发送测试结果)
    背景:这里报告是allure,提取数据可以用data/categories.csv这个文件思路跟上一篇的python是一样的,这里就简单贴下代码 这里需要注意的是json的转义,message变量需要用双引号括起来。CICD中配置如下 ......
  • TortoiseGit合并commit的一条记录到另一个分支
    背景:git仓库有2个分支,分别是master和develop两个分支。多人协作的代码分支为develop,正式发布的分支为master,现要指定develop分支下的commit合并到master分支中。 第一、把本地代码切换到master分支如果没有克隆master分支,则先克隆,克隆完成后在master下操作下述步骤;如果没有Git......
  • 解决添加到.gitignore无效
    如果将.env.development文件添加到.gitignore中,但仍然在Git提交中看到该文件被包含,可能有几个原因导致.gitignore无效:文件已经被跟踪:如果.env.development文件在之前的提交中已经被跟踪(tracked),那么将它添加到.gitignore中不会自动将其从Git版本控制中移除。你需要......
  • Git 学习笔记
    Git学习笔记起步安装#在ubuntu上安装sudoaptinstallgit-all初次运行Git前的配置安装完git之后,要做的第一件事就是设置你的用户名和邮件地址,因为每一个git提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:gitconfig--globaluser.name"lockegogo......
  • 在GitHub上管理项目
      新建repository本地目录下,在命令行里新建一个代码仓库(repository)里面只有一个README.md命令如下:touchREADME.mdgitinit初始化repositorygitaddREADME.md将README.md加入到缓存区(可以用gitadd--a将所有改动提交到缓存(注意是两个杠)) gitcommi......