git --- cherry pick
- cherry pick
cherry pick
- Cherry Pick 是 Git 中的一個操作,它允許你選擇某個分支的某次(或多次)提交,并將其應用到當前分支,而不會合并整個分支的所有更改。
cherry pick 的作用
- 只提取某個特定的提交(而不是整個分支的改動)。
適用于修復 Bug 或移植某個功能,而不想合并整個分支。
避免不必要的沖突,只引入需要的更改。
使用場景
- 修復 Bug:如果某個 Bug 在 main 分支修復了,但 dev 分支也需要這個修復,可以直接 cherry-pick 這個提交。
- 部分功能移植:某個功能在 feature-A 分支開發完成,但只想提取其中幾個關鍵提交到 main 分支。
- 撤銷錯誤的提交:如果某個提交被誤合并到錯誤的分支,可以用 cherry-pick 把它移到正確的分支 (但是并不能刪除錯誤的提交)
基本用法
git cherry-pick <commit-hash>
## <commit-hash> 是你想要應用的提交的哈希值(如 a1b2c3d)。
示例
示例
- 查看提交歷史,找到要應用的提交:
git log --oneline
# 輸出示例:
# a1b2c3d (HEAD -> main) Fix login bug
# e4f5g6h Add new feature
切換到目標分支(如 dev):
git checkout dev
執行 cherry-pick:
git cherry-pick a1b2c3d
# 這樣,Fix login bug 這個提交就會被應用到 dev 分支。
選項 | 作用 |
---|---|
-n | (–no-commit) 只應用更改,但不自動提交 |
-e | (–edit) 在應用提交前允許修改提交信息 |
-x | 在提交信息里追加來源提交的哈希(推薦用于追蹤來源) |
–abort | 如果發生沖突,放棄 cherry-pick 操作 |
–continue | 解決沖突后繼續 cherry-pick |
注意事項
- 可能引發沖突:如果目標分支和原提交的上下文不同,可能需要手動解決沖突。
- 慎用:過度使用 cherry-pick 可能導致提交歷史混亂,建議在必要時使用。
- 與 merge 的區別:merge 合并整個分支的改動,而 cherry-pick 只挑部分提交。
總結
Summary
- git cherry-pick 是一個靈活的工具,適合精準移植某個提交,而不是整個分支的改動。合理使用可以提高開發效率,但濫用可能導致代碼歷史難以維護