如何挑选多个提交记录
如何挑选多个提交记录
技术背景
在使用Git进行版本控制时,有时我们并不想合并整个分支,而是只需要其中的部分提交记录。Git 1.7.2 引入了挑选一系列提交记录的功能,让我们可以更灵活地处理提交记录。
实现步骤
挑选从提交 A 到提交 B 的所有提交记录
若要挑选从提交 A
到提交 B
(A
早于 B
)的所有提交记录,可运行:
1 |
|
若要忽略 A
本身,可运行:
1 |
|
注意事项:
A
应早于B
,或者A
应来自另一个分支。- 在 Windows 系统中,由于脱字符需要转义,应使用
A^^..B
,或者使用双引号"A^..B"
。 - 在
zsh
shell 中,由于脱字符是特殊字符,应使用单引号'A^..B'
。
挑选单个提交记录
1 |
|
示例:
1 |
|
挑选多个提交记录
可以一次性挑选任意数量的提交记录,且可以按任意顺序挑选。它们将按指定顺序逐个应用。若出现冲突,需逐个解决,然后使用 git add my_file
,完成后使用 git cherry-pick --continue
继续挑选过程。
1 |
|
挑选提交记录范围
- 包含起始提交记录:
1 |
|
- 不包含起始提交记录:
1 |
|
注:commit~
、commit~1
和 commit^
都表示 “commit
的前一个提交记录”。
挑选同行的一系列提交记录到自己的分支
当同行的分支 peer_branch
是从自己分支 my_branch
的早期版本分叉出来时:
1 |
|
核心代码
从提交 ID 到分支顶端挑选提交记录
1 |
|
按顺序挑选从分支 b
到 f
的所有提交记录
1 |
|
通过标准输入管道输入提交记录的 SHA 列表进行挑选
1 |
|
最佳实践
简单的单提交记录挑选示例
从 “dev” 分支获取一个名为 “Remove Last Name field” 的提交记录,并提交到 “hotfix1” 分支:
1 |
|
批量挑选多个提交记录
1 |
|
常见问题
冲突问题
在挑选提交记录时,如果出现冲突,需要手动解决冲突。解决冲突后,使用 git add my_file
将解决冲突的文件添加到暂存区,然后使用 git cherry-pick --continue
继续挑选过程。
语法问题
在不同的系统和 shell 中,某些字符(如脱字符 ^
)可能需要特殊处理。例如,在 Windows 系统中,可能需要使用 A^^..B
或 "A^..B"
;在 zsh
shell 中,可能需要使用 'A^..B'
。
如何挑选多个提交记录
https://119291.xyz/posts/how-to-cherry-pick-multiple-commits/