如何在现有裸存储库中创建reflog信息

时间:2011-05-26 14:18:53

标签: git git-bare reflog

正如您可能已经知道的那样,默认情况下,git不会为新的裸存储库启用reflog更新。问题是,我有一个很长的历史存储库但它是在我设置标志“logAllRefUpdates”之前创建的,现在我希望其他应用程序的信息可以工作。

如何通过对现有存储库进行的最小更改来实现这一目标。一个非常简单的解决方案是推送一个我不想要的新提交(!): - )

1 个答案:

答案 0 :(得分:2)

reflog是一种相对简单的文件格式。这是一个例子:

] cat .git/logs/HEAD|sed 's/\t/<TAB>/'
0000000000000000000000000000000000000000 5cfe4256d98af22a570c78c5e3048391a90f5f98 Joe User <foo@example.com> 1306427954 -0400<TAB>clone: from git://git.kernel.org/pub/scm/git/git.git

您可以按照相同的格式手动构建适当的reflog:

previous-ref-or-zero new-ref User Name <user@email> unix-timestamp timezone\tmessage

为每个参考创建其中一个。您可以使用git for-each-ref直接使用适当的格式字符串(谢谢,Chris!)

来执行此操作