由于一个拙劣的git commit --fixup,我正处于重基地地狱的中间。我想我已经找到消息来源了,我现在的处境比我开始的要好。然而,如果我看一下git,这一系列'rebase -i‘行看起来就像我以前失败的尝试一样。
我能把我自己的台词加到reflog里吗?说一些看起来会像:
$ git reflog mark '== we are not worse off than we started here =='
$ git reflog -3
cb6536f HEAD@{0}: mark: == we are not worse off than we started here ==
cb6536f HEAD@{1}: rebase -i (finish): fixup! foo: baz the widgets
9db07de HEAD@{1}: rebase -i (pick): fixup! baz: implement widget bazzing发布于 2016-04-21 19:34:22
您可以在任何时候使用git使用的相同命令添加一个新的reflog条目,即git update-ref。这是一个“管道”(面向脚本的)命令,所以它对用户不太友好,您可能需要添加自己的小包装脚本或别名。
示例:
git update-ref -m 'mark: whatever' HEAD HEAD
git update-ref -m 'mark: another thing' refs/heads/branch branch
git update-ref -m 'mark: third thing' refs/heads/branch refs/heads/branch
hash=$(git rev-parse refs/heads/branch) && \
git update-ref -m 'mark: 4' refs/heads/branch $hash注意,<ref> (第一个非选项参数)必须完整地拼写出来。<newvalue>可以是解析为有效的SHA-1的任何东西,这就是为什么三个示例的中间命令可以工作,但为了安全起见,最好使用第三种形式(准确地重复<ref> )或使用实际的SHA-1散列(第四种形式),让git rev-parse验证这实际上是一个有效的分支名称。
(在使用HEAD时,您可以跳过验证,因为如果HEAD不是有效名称,则git根本无法工作。)
发布于 2020-02-26 05:28:30
正如本2020螺纹中所提到的
还有
core.logAllRefUpdates,它在更现代版本的Git中具有"always“的价值。 文件上说: 如果将该选项设置为always,则会自动为参考文献/下的任何ref创建缺少的reflog。 现在,假设您想要为所有的裁判重发,但没有太多的缺点是拥有一个重飞,而不是使用它。
杰夫·金斯补充道:
当前的规则实际上是附加到任何已经存在的重触发器,或者在决定是否创建不存在的重触发器时咨询
core.logAllRefUpdates。因此,我认为设置一个一次性配置变量如下: -c core.logAllRefUpdates=always更新-参考文献/foo/bar. 将创建reflog,然后任何后续更新(即使没有配置集)都会追加到它。 您也可以这样做: mkdir -p . git /log/ref/ref/foo/ touch .git/log/ref/foo/bar git更新-参考文献/foo/bar. 但我不推荐。 当我们最终转向支持其他ref后端格式时,它们不一定会以相同的方式存储日志。
https://stackoverflow.com/questions/36770141
复制相似问题