挑选提交
了解如何使用 `git cherry-pick` 将一个分支中的单个提交有选择地应用到另一个分支。
挑选提交 是 CoddyKit 上的免费 Git & GitHub Professional Workflow 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Git & GitHub Professional Workflow 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Git & GitHub Professional Workflow 课程共包含 4 节课。
有选择地移动提交
如果您只需要某个分支中的一条特定更改,而不是整个分支,该怎么办?git cherry-pick 可以将仓库历史记录中任意位置的一条提交直接应用到当前分支。
这就像从树上摘下一颗樱桃!它会在当前分支上创建一条全新的提交,其中复制原始提交的更改。
何时使用拣选提交
假设您正在开发一个大型功能分支,并发现其中完成的一个关键错误修复现在也需要立即应用到主生产分支。您还不想合并整个功能分支。
这正是使用 cherry-pick 的理想场景。它可以帮助您移植独立的更改,而不会带来无关的工作。
基本命令
基本命令很简单:git cherry-pick <commit-hash>。
- 首先,确认您位于要应用该提交的分支上。
- 然后,获取要拣选的提交的唯一标识符(哈希值)。
- Git 随后会在当前分支上创建一条包含相同更改的新提交。
git cherry-pick <commit-hash>查找提交哈希值
要使用 cherry-pick,您需要哈希值!可以使用 git log 查找它。
--oneline 选项非常实用,可以简洁地查看记录:
git log --oneline设置拣选提交场景
让我们设置一个简单的场景。我们将创建 main 分支和 feature/login 分支,并在 feature/login 上创建一条希望带到 main 的提交。
我们希望将“HOTFIX”提交带到 main。
git init my_project
cd my_project
echo "Initial content" > file.txt
git add file.txt
git commit -m "Initial commit"
git branch feature/login
git checkout feature/login
echo "Login feature added" >> login.txt
git add login.txt
git commit -m "Add basic login feature"
echo "Fix: Login button style" >> style.css
git add style.css
git commit -m "HOTFIX: Fix login button styling"执行拣选提交
现在切回 main 分支,并应用“HOTFIX”提交。假设“HOTFIX: Fix login button styling”的哈希值是 abcdefg。
运行此命令后,main 分支上会出现一条新提交,其中包含与 abcdefg 相同的更改。使用 git log --oneline 查看它!
git checkout main
git cherry-pick abcdefg处理拣选提交冲突
与合并一样,如果两段历史记录中的相同行代码存在不同更改,拣选提交也可能导致冲突。
- Git 会暂停操作,并标记发生冲突的文件。
- 手动解决文件中的冲突。
- 使用
git add暂存已解决的文件。 - 使用
git cherry-pick --continue完成操作。
# After resolving conflicts in editor:
git add .
git cherry-pick --continue拣选多个提交
您可以一次拣选多条提交。
要拣选一段提交范围(从 hashA 开始,到 hashB 为止但不包含 hashB):
git cherry-pick hashA..hashB何时使用(以及不使用)
拣选提交功能很强大,但请务必谨慎使用。
- 适合:修复紧急问题,以及在无关分支之间移植小型、独立的更改。
- 不太适合:定期整合大量更改,因为如果不谨慎,可能会产生重复提交,使历史记录更难追踪。要整合整个分支,优先使用合并或变基。
快速检查:拣选提交的用途
您的 feature/new-design 分支中有一条修复关键样式问题的提交。您需要立即将此修复应用到 main 分支,但不想合并整个功能分支。
回顾:有针对性的更改
在本课中,我们学习了 git cherry-pick,这是一个用于将特定提交应用到当前分支的实用命令。
- 它会在目标分支上创建一条包含相同更改的新提交。
- 它非常适合修复紧急问题或移植独立的更改。
- 您需要提交的哈希值,通常可以使用
git log --oneline找到。 - 请做好解决冲突的准备,过程与合并时类似。
掌握 cherry-pick 后,您就能精确控制项目的历史记录!
常见问题解答
「挑选提交」课时是免费的吗?
是的 — 「挑选提交」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Git & GitHub Professional Workflow 课程的其余内容,请升级到 CoddyKit PRO。 Git & GitHub Professional Workflow 课程共包含 4 节课。
「挑选提交」这节课中我会学到什么?
了解如何使用 `git cherry-pick` 将一个分支中的单个提交有选择地应用到另一个分支。 你通过在浏览器中直接运行的动手代码来练习 Git & GitHub Professional Workflow,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Git & GitHub Professional Workflow 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Git & GitHub Professional Workflow 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「挑选提交」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Git & GitHub Professional Workflow 课中编写并运行代码吗?
能。每节 Git & GitHub Professional Workflow 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。