`
sg552
  • 浏览: 612804 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
47437293-94b9-3b04-9152-8971c7580049
白手起家学习使用Flex
浏览量:18433
社区版块
存档分类
最新评论

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

阅读更多

实际问题:
  在本地 master 分支上做了一个commit ( 38361a68138140827b31b72f8bbfd88b3705d77a ) , 如何把它放到 本地 old_cc 分支上?

办法之一: 使用 cherry-pick.  根据git 文档:

Apply the changes introduced by some existing commits

就是对已经存在的commit 进行apply (可以理解为再次提交)

简单用法:

git cherry-pick <commit id>


例如:
$ git checkout old_cc
$ git cherry-pick 38361a68     # 这个 38361a68 号码,位于:

 
$ git log
commit 38361a68138140827b31b72f8bbfd88b3705d77a
Author: Siwei Shen <siwei.shen@focusbeijing.com>
Date:   Sat Dec 10 00:09:44 2011 +0800


1. 如果顺利,就会正常提交。结果:

Finished one cherry-pick.
# On branch old_cc
# Your branch is ahead of 'origin/old_cc' by 3 commits.


2. 如果在cherry-pick 的过程中出现了冲突

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


就跟普通的冲突一样,手工解决:
2.1 $ git status    # 看哪些文件出现冲突

both modified:      app/models/user.rb


2.2 $ vim app/models/user.rb  # 手动解决它。
2.3 $ git add app/models/user.rb
2.4 git commit -c <新的commit号码>

5
1
分享到:
评论
4 楼 softor 2017-12-21  
palytoxin 写道
如果cherry-pick某分支a某一次提交之后

过一段时间对分支a执行merge操作,相同的两次提交会产生什么效果?

我有类似使用经历,由于有 commit id 标识,所以合并时不会有冲突。
3 楼 softor 2017-10-25  
bit6211 写道
请问有办法在对两个分支,同时都拥有的文件,进行修改后,再同时commit到这两个分支吗?比如master分支和branch1分支,都拥有文件test.cpp,在master或者branch1分支下对test.cpp进行后,能否把修改的test.cpp同时提交到master分支和branch1分支?
如果方便,请帮忙解答,谢谢。

哪个分支需要就 pick 到那个分支即可。
2 楼 bit6211 2015-02-14  
请问有办法在对两个分支,同时都拥有的文件,进行修改后,再同时commit到这两个分支吗?比如master分支和branch1分支,都拥有文件test.cpp,在master或者branch1分支下对test.cpp进行后,能否把修改的test.cpp同时提交到master分支和branch1分支?
如果方便,请帮忙解答,谢谢。
1 楼 palytoxin 2014-07-04  
如果cherry-pick某分支a某一次提交之后

过一段时间对分支a执行merge操作,相同的两次提交会产生什么效果?

相关推荐

    git 视频教程

    git视频教程.8.1.Git 命令 - git cherry-pick.mp4 git视频教程.8.2.Git 命令 - git rebase.mp4 git视频教程.8.3.Git 命令 - git rebase.mp4 git视频教程.8.4.Git 命令 - git revert.mp4 git视频教程.9.Git 命令 - ...

    learn-git-cherry-pick:一个展示如何使用基本的cherry-pick 命令的repo

    如果您的cherry-pick 命令在复制命令中指定的提交之一时失败(例如,发生冲突时),您可以使用以下命令稍后继续/退出/中止下一个目标提交。 git cherry-pick --continue git cherry-pick --quit git cherry-pick -...

    Git-2.21.0-64-bit.zip

    commit-graph files now, which allows the commit-graph files to be updated incrementally. * "git range-diff" output has been tweaked for easier identification of which part of what file the patch ...

    GIT中文资源

    2.4.1 修改最后一次提交 . . . . . . . . . . . . . . . . . . . . . . 29 2.4.2 取消已经暂存的文件 . . . . . . . . . . . . . . . . . . . . . 30 2.4.3 取消对文件的修改 . . . . . . . . . . . . . . . . . . ....

    ZhongJinHacker#notes#git_cherry-pick总结1

    cherry-pick : 精心挑选,挑选一个我们需要的 commit 进行操作。它可以用于将在==其他分支==上的 commit 移植到==当前的分支==。

    Git-2.23.0/win64/32/mac 多文件

    *“git cherry-pick / revert”学会了一个新的“--skip”动作。 *来自备用对象库的引用提示可用作 现在可达性计算的起点。 *“git status”输出中的额外空行已减少。 *存储库中的提交可以用多个来描述 现在...

    commit-pocket::wrapped_gift: Git Commit Pocket CLI 来归档 Git 提交

    在使用 Git 命令(例如 rebase、cherry-pick 等)时,存储您需要的[Commit ID]是一个有用的 CLI。 :rocket: 如何使用 :fire: 安装$ npm install -g commit-pocket :person_juggling: 入门$ commit-pocket :backpack...

    annotated-git-session:带注释的git会话,演示一些基本的git概念

    注释的Git会话 用于向Git引入新手的一些基本思想。 这是一种糟糕的静态版本,它坐在使用Git的人旁边,告诉那些人在做什么时,他们在做什么,对于... git cherry-pick git commit git diff git fetch (提到了git pu

    mmp-cli:git工作流快捷工具

    安装npm install mmp-cli -gAPI初始化配置 mmp init查看配置mmp ls提交当前分支到[可选分支] mmp ci [master]cherry-pick某几条提交到某分支# commit_id 是左开右开的mmp cp [commit_start_id] commit_end_id master...

    迷你壳

    m " message "$ git checkout main //go to main to fetch this commit 从工作分支到主分支的提货提交$ git reflog //copy your commit ID$ git cherry-pick ID //paste the ID 推送请求之前,请更新本地文件夹$ git...

    gitbin

    熟悉的git命令的小伙伴对于git添加,git pull,git push,git commit,git checkout命令应该不陌生生,大家有没有发现每一个命令我必须输入git +命令,好麻烦啊,此项目正式为了解决这个问题,git add改成成对,git ...

    git常用命令总结下载

    1.基础命令(add、commit、pull、push等); 2.分支操作(branch、checkout、cherry-pick、rebase等); 3.回滚与重做(reset、revert等); 4.日志(log、reflog、blame等)。

    EGit用户指南

    Eclipse Git用户指南 目录 1 Getting Started 1.1 Overview 1.2 Basic Tutorial: Adding a project to version control 1.2.1 Configuration 1.2.1.1 Identifying yourself 1.2.1.2 Setting up the Home ...

    SDV502-版本控制系统:版本控制系统

    第一步-使用git log查看提交哈希 第二步-使用git cherry-pick d33c8d1移动到该提交 第三步-遇到合并冲突 第四步-接受代码中的传入更改第五步-使用git add和git commit进行更改第六步-精心挑选的变更完成 取消登台...

    edamagit:MagCode for VSCode

    毛豆 Magit for VSCode,其灵感来自令人敬畏的原始 。 ••• • 键盘驱动的Git界面 大块的演出 (主题:) 用法 VSCode命令 默认快捷方式 ... &gt; Magit命令面板中的Magit将... A Cherry-pick b Branch c Commit d Diff

Global site tag (gtag.js) - Google Analytics