Git 使用学习笔记
  • 本书介绍
  • Git基础
    • Git追踪文件的生命周期
    • 文件状态
    • 修改类型
    • 理解Git三个树
    • 理解git checkout与git reset区别
  • Git基本命令
    • 文件操作
      • git mv
      • git rm
      • git add
    • 查询
      • git status
      • git diff & git difftool
      • git log
    • 提交、撤销与拉取
      • git commit
      • git checkout
      • git reset
    • 远程库操作
      • git clone
      • git remote
      • git fetch
      • git push
    • 标签
      • git tag & git show
    • 分支操作与管理
      • git branch
      • git checkout
      • git merge
      • git rebase
    • 偏好设置
      • git config
  • Git高级命令
    • 储藏与清理
      • git stash
    • 提取
      • git cherry-pick
    • 常用场景实战
      • 修改commit提交
      • 修改远程仓库提交
  • .gitignore
    • 使用.gitignore文件
    • glob模式
  • GitLab操作
    • 什么是GitLab
    • 基于 Merge Request 的开发流程
    • 如何撤销 Merge Request?
Powered by GitBook
On this page

Was this helpful?

  1. Git高级命令
  2. 提取

git cherry-pick

Previous提取Next常用场景实战

Last updated 6 years ago

Was this helpful?

可以让你从在已提交的commit中提取多个commit作为当前分支新的修改commit。例如可以实现把分支A的更改在分支B重新提交一遍。前提条件是你的工作树必须为空的无修改(干净的)状态。

推送数据

git cherry-pick [-e] [-n] [<branch_name>|<tree-ish>]
  • 参数

    • branch_name (分支名,默认当前HEAD所在分支的跟踪分支)

    • tree-ish (提交索引哈希,可以使用多个,用空格隔开)

  • 选项

    • -e|--edit 修改上一次commit提交的信息

    • -n|--no-commit 只是在当前分支上apply这些commits的改变,但是不提交到当前分支

F:\mac\WebstormProjects\WebstormProjects\gitLearn>git cherry-pick d318fc6
[checkTag 999f510] :
 Date: Mon Nov 12 21:54:04 2018 +0800
 1 file changed, 1 insertion(+), 1 deletion(-)

当提交了一个cherry-pick会出现下列步骤:

  1. 当前分支盒HEAD头会保持在最后一次成功commit

  2. CHERRY_PICK_HEAD 引用会设定在提取目标的提交commit

  3. 那些已经提交完成的更改,它们的文件路径会在暂存区和工作树这两个工作区更新

  4. 对于那些存在冲突的文件,暂存区会把该文件记录成3个版本,称之为“可信的合并”,原理与相同。工作树的文件在冲突的地方注释不常用到的冲突符号<<<<<<< 和 >>>>>>>

  5. 没有任何修改

git merge合并