我已将 Git 配置为记录所有引用的引用日志:
$ git config core.logallrefupdates
always
并且这有效。包括记录带注释标签的引用日志。但
git reflog
如果引用指向带注释的标签,则不会给出任何输出:
$ git reflog anno1
<no output>
然而,它适用于轻量级标签。据说是因为轻量级标签直接指向提交(不同于带注释的标签指向标签对象)。
git tag --force […]
如果我想“重置”( )到以前的状态,那么获取带注释的标签的 reflog 就好了。
我可以直接打印 reflog 文件,如下所示:
cat .git/logs/refs/tags/anno1
但我没有看到使用某些 git(1) 命令来实现此目的的方法。
通过测试“git tag”后跟“git reflog”的行为:
很明显,
git reflog
目前只处理commit
对象。事实证明,当标签的当前值不是提交时(例如:当标签不是提交的轻量级标签时),
git reflog
甚至不会显示该引用的历史记录;而当它显示历史记录时,只会显示提交。