ご存知かもしれませんが、デフォルトでは、gitは新しいベアリポジトリのreflog更新を有効にしません。問題は、長い履歴リポジトリがありますが、フラグ「logAllRefUpdates」をオンにする前に作成されたため、別のアプリケーションでその情報を機能させたいということです。
既存のリポジトリに最小限の変更を加えるだけで、どうすればそれを実現できますか。非常に簡単な解決策は、私がしたくない新しいコミットをプッシュすることです(!):-)
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
ます (ありがとう、クリス!)