Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
* Git高级命令
* 储藏与清理
* [git stash](git-commands/git-stash.md)
* 提取
* [git cherry-pick](git-commands/git-cherry-pick.md)
* 常用场景实战
* [修改commit提交](git-commands/git-ammend-commit.md)
* [修改远程仓库提交](git-commands/git-force-update-remote-commit.md)
Expand Down
20 changes: 20 additions & 0 deletions git-commands/git-cherry-pick.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#git cherry-pick
>可以让你从在已提交的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的改变,但是不提交到当前分支

当提交了一个cherry-pick会出现下列步骤:
1. 当前分支盒HEAD头会保持在最后一次成功commit
1. CHERRY_PICK_HEAD 引用会设定在提取目标的提交commit
1. 那些已经提交完成的更改,它们的文件路径会在暂存区和工作树这两个工作区更新
1. 对于那些存在冲突的文件,暂存区会把该文件记录成3个版本,称之为“可信的合并”,原理与[git merge合并](git-merge.md)相同。工作树的文件在冲突的地方注释不常用到的冲突符号<<<<<<< 和 >>>>>>>
1. 没有任何修改