6

ご存知かもしれませんが、デフォルトでは、gitは新しいベアリポジトリのreflog更新を有効にしません。問題は、長い履歴リポジトリがありますが、フラグ「logAllRefUpdates」をオンにする前に作成されたため、別のアプリケーションでその情報を機能させたいということです。

既存のリポジトリに最小限の変更を加えるだけで、どうすればそれを実現できますか。非常に簡単な解決策は、私がしたくない新しいコミットをプッシュすることです(!):-)

4

1 に答える 1

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ます (ありがとう、クリス!)

于 2011-05-26T16:41:11.997 に答える