Git cherry-pick后提交信息突然丢失了怎么办?
我在合并分支时用了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,但还是没恢复信息,这是怎么回事啊?
先说解决办法。你可以用
git cherry-pick的时候加上-x参数,比如这样:这个参数会在新生成的提交信息里自动追加一行,类似
(cherry picked from commit <hash>),确保你能追踪到原始提交。如果你已经搞砸了当前的 cherry-pick,可以先回退,比如用git reset --hard HEAD~1撤销最近一次提交,然后重新执行带-x的 cherry-pick。如果问题已经发生了,想找回原来的提交信息,可以通过
git reflog找到对应的原始 commit hash,然后手动把信息补上。比如:这会打开编辑器让你修改当前的提交信息,把之前的内容补回去就行。
最后提醒一下,cherry-pick 本质上是复制提交,所以每次操作都会生成新的 commit hash,不要指望它能完全保留原始记录。JS 里面我们常说“引用和值的区别”,Git 这里也是类似的概念,原始提交和 cherry-pick 后的提交其实是两个不同的东西。下次记得加上
-x参数,省得再折腾了。git show [commit-hash]看具体内容。如果确实丢了,重新cherry-pick时加-x参数:git cherry-pick -x [commit-hash],会把原提交信息带上。就这样。