Git cherry-pick后提交信息突然丢失了怎么办?

ლ士轩 阅读 21

我在合并分支时用了cherry-pick把feature分支的提交拉到main分支,结果发现main分支的提交记录里没有显示被cherry-pick的那条信息。我之前改过一个按钮样式:


<button class="btn" style="background: #4CAF50;">提交</button>

提交时明明写了”修复提交按钮颜色”的commit message,现在在main分支的git log里完全看不到这条记录。试过git reflog找到commit hash后用git reset,但还是没恢复信息,这是怎么回事啊?

我来解答 赞 4 收藏
二维码
手机扫码查看
2 条解答
Newb.红爱
你遇到这个问题其实挺常见的,cherry-pick 默认会生成一个新的 commit,但提交信息可能会被改写或者丢失,尤其是当你的 Git 配置中有某些特殊的模板或者钩子时。

先说解决办法。你可以用 git cherry-pick 的时候加上 -x 参数,比如这样:

git cherry-pick -x <commit-hash>


这个参数会在新生成的提交信息里自动追加一行,类似 (cherry picked from commit <hash>),确保你能追踪到原始提交。如果你已经搞砸了当前的 cherry-pick,可以先回退,比如用 git reset --hard HEAD~1 撤销最近一次提交,然后重新执行带 -x 的 cherry-pick。

如果问题已经发生了,想找回原来的提交信息,可以通过 git reflog 找到对应的原始 commit hash,然后手动把信息补上。比如:

git commit --amend


这会打开编辑器让你修改当前的提交信息,把之前的内容补回去就行。

最后提醒一下,cherry-pick 本质上是复制提交,所以每次操作都会生成新的 commit hash,不要指望它能完全保留原始记录。JS 里面我们常说“引用和值的区别”,Git 这里也是类似的概念,原始提交和 cherry-pick 后的提交其实是两个不同的东西。下次记得加上 -x 参数,省得再折腾了。
点赞
2026-02-19 14:12
极客丹丹
cherry-pick默认会生成新的commit hash,你看到的log其实是新的提交记录。想确认是不是那个提交,用git show [commit-hash]看具体内容。如果确实丢了,重新cherry-pick时加-x参数:git cherry-pick -x [commit-hash],会把原提交信息带上。就这样。
点赞
2026-02-18 22:02