如何在Git cherry-pick时添加额外修改内容?
解决Git Cherry-Pick无冲突时添加额外修改的简便方法
当cherry-pick无冲突完成后需要添加额外修改时,不用先回退再重做,直接用--no-commit配合CHERRY_PICK_HEAD引用就能高效解决:
具体步骤
- 执行带
--no-commit的cherry-pick,保留原提交的变更但不完成提交:
git cherry-pick -x --no-commit <ref>
- 添加你的额外修改(比如ChangeLog、NEWS条目),并暂存这些修改:
git add <你的额外修改文件路径>
- 复用原提交的作者信息和提交内容完成最终提交:
git commit -C CHERRY_PICK_HEAD
关键说明
CHERRY_PICK_HEAD是Git在执行cherry-pick操作时自动创建的临时引用,不管是否用--no-commit,它都会保存被cherry-pick的原提交的完整信息(作者、提交消息等)。git commit -C命令会直接复用这个引用里的提交信息,同时合并你新增的修改内容。
简化操作:封装Git别名
如果经常需要这个操作,可以封装成全局Git别名,一键完成流程:
git config --global alias.cp-with-edit '!git cherry-pick -x --no-commit $1 && git add . && git commit -C CHERRY_PICK_HEAD'
之后只需执行git cp-with-edit <ref>即可(注意git add .会暂存所有未跟踪/修改的文件,若只想暂存特定文件,替换成具体路径即可)。
内容的提问来源于stack exchange,提问作者emacs drives me nuts
相关产品推荐
相关产品推荐

