GIT 使用cherry-pick 重演其他分支的提交

在使用Git时是否会遇到这样的问题:

你正在使用Git进行版本控制,某天你接着昨天的工作了提交了N个提交,结果在合并远程分支的时候才发现原来你在工作之前没有注意到你要提交的分支状态

结果导致你本来要提交到hotfix分支的提交结果全部提交到了dev分支上,而远程分支你的同事已经提交了很多更改,如果遇到这种情况该怎么做呢?

  1. 从远程分支提取所有的提交(这时你本地的hotfix分支跟远程分支是一样的)
  2. 在hotfix分支上,使用cherry-pick合并原本属于hotfix分支的提交而提交到dev分支的提交(需要手动合并冲突)
  3. 切换dev分支,将属于hotfix分支的提交移除或直接恢复到最后一次dev分支历史上
  4. 切换hotfix分支并继续工作

由于cherry-pick没有使用过,所以以下是从创建仓库到完成重演的所有提交,主要是了解cherry-pick是如何工作的

git-scm#cherry-pick:可以理解为 再次提交/重演已经提交过的提交(可以在同一分支或不同分支)

参考:

CHERRY-PICKING EXPLAINED

git cherry-pick. 如何把已经提交的commit, 从一个分支放到另一个分支

图解Git

3.6 Git 分支 - 变基

git cherry-pick 把提交到A分支的部分commit 再提交到B分支上
    git cherry-pick 處理專案 pull request

git cherry-pick 最佳实践

一个 Git 学习的网站

Replay the last N git commits on a different branch

How to replay a commit onto a branch that already contains the commit?

测试数据下载:百度云盘

来自为知笔记(Wiz)

时间: 2024-07-29 11:21:29

GIT 使用cherry-pick 重演其他分支的提交的相关文章

git使用笔记(二)分支与合并

By francis_hao    Nov 18,2016 查看分支,* 表示当前所在分支 $ git branch 查看分支和最后一次提交记录 $ git branch -v 新建分支 $ git branch alphabet 切换分支 $ git checkout alphabet 新建和切换可以合并为一步操作 $ git checkout -b digital 删除一个分支,注意:不能删除当前所在分支 $ git branch -d for_delete 查看所有分支的提交记录 $ gi

git小技巧--如何从其他分支merge个别文件或文件夹

在实际工作中,一个大型的项目或版本迭代可能不是一次上线,可能会分好几次上线,这时候就会涉及创建多个分支,进行分别开发. 创建分支 功能分为2个分支,分别为A.B. A上面有个列表页功能 B上面有个详情页功能,还有个系统消息功能 产品经理说先上列表功能,于是我们就开发A分支,列表功能很快开发完成. 第二天按常理开发B分支,开发到一半,产品经理说目前的系统消息功能需要急着上线,要和列表功能一起上线,当时就懵逼了,然后赶紧放下详情页的开发,立马去开发系统消息功能,开发完之后需要将列表功能和系统消息功能

Git使用基本方法(从远程服务器获取分支,提交修改)

做项目初次用到Git,以前没用过,完全没不懂,琢磨了好久才弄得差不多,特此分享,可以少走点弯路. 这次用的操作系统是Mint 1.首先需要安装Git sudo apt-get install git 2.在本地新建Git仓库 新建一个文件夹,然后文件夹中打开终端,输入命令git init,即可创建一个仓库 3.连接Git服务器 这次我们用的服务器是http://git.oschina.net 输入命令 git remote add origin <server>,将<server>

Git学习笔记(六)分支管理

学习廖雪峰老师的Git教程的笔记,以供自己以后复习查看. ★★★★★ 创建.合并.删除分支.     ★创建分支 git branch branchName --------创建分支               git checkout branchName -----切换到分支           上面两条命令可以合并为:git checkout -b branchName 创建并切换到分支 ★合并分支               git merge branchName -------合并指

Git 一次性 pull push 所有的分支

/********************************************************************************* * Git 一次性 pull push 所有的分支 * 说明: * 使用Git一次性推送所有的分支,之前一般都是单独推送一个分支,现在是多分支操作, * 可能涉及到多分支推送,得找个办法解决. * * 2016-12-22 深圳 南山平山村 曾剑锋 ******************************************

git创建分支并提交项目

git 创建分支, 切换分支, 合并分支, 删除分支及提交[commit提交到本地仓库push名利提交到远程服务器], 检出[pull], 冲突修改, 本地仓库同步远程服务器[pul和push命令l]操作 开发中常用操作 删除文件:git rm 文件名[删除本地git仓库文件, 提交后远程服务器上的文件才会消失] 查看状态:git status 添加记录:git add 文件名 或 git add . [将文件提交到远程git服务器上] 添加描述:git commit -m "描述或备注类似sv

git branch 相关操作总结 新建分支 删除分支 切换分支 查看分支

查看分支 (1) 查看本地分支  git branch 列出本地已经存在的分支,并且在当前分支的前面加*号标记,例如:localhost:website admin$ git branch* branch_dev_2_1_0  master (2) 查看远程分支  git branch -r 例如:localhost:website admin$ git branch -r  origin/branch_dev_2_1_0  origin/branch_dev_2_1_0_cover  orig

git入门学习(二):新建分支/上传代码/删除分支

一.git新建分支,上传代码到新的不同分支 我要实现的效果,即是多个内容的平行分支:这样做的主要目的是方便统一管理属于同一个内容的不同的项目,互不干扰.如图所示: 前提是我的github上已经有webpack_test项目了,我是在这个项目的基础上新建其他的分支并开展工作的.如图: 如果你对如何新建webpack_test项目不清楚,请参考我的前一篇文章:git入门学习(一):github for windows上传本地项目到github,操作步骤如下: 1.1.保留webpack_test项目

git使用八创建和合并分支

创建与合并分支. 在  版本回填退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支. 首先,我们来创建dev分支,然后切换到dev分支上.如下操作: git checkout 命令加上 –b参数表示创建并切换,相当于如下2条命令 git branch dev git check