首页 > 解决方案 > 如何确定 git fixup 提交的目标提交?

问题描述

在创建修复 git 提交后,是否有办法显示或 cat-file 或提交内容并找出它的目标提交?具体来说,我不想一直猜测和检查 rebase -i 来发现我的 rebase 目标在历史上已经足够远了。

标签: git

解决方案


我假设您的意思是使用生成的提交 git commit --fixup

Git 使用 fixup 提交的提交消息的第一行,类似于以下内容:

fixup! Remove some foos from bars

要查找此提交,您可以使用 Git 本身将使用的完全相同的方法:它搜索让 Git 在历史记录中搜索,直到找到以fixup!标记后面的文本开头的提交。魔术命令是:

git show 'HEAD^{/Remove some foos}'

这将从 at 开始搜索HEAD并显示与大括号中的文本匹配的第一个提交(sans /,这是搜索以下文本的指令)。


编辑:当我在 Windows CMD 中测试东西(特别是它的处理^)时,我真的很困惑。正如@torek 在评论中指出的那样,^{/xyz}语法在整个提交消息上匹配给定的正则表达式。因此,有必要将正则表达式锚定在文本的开头。正确的命令是:

git show 'HEAD^{/^Remove some foos}'

推荐阅读