SYNOPSIS

git replace [-f] <object> <replacement>
git replace [-f] --edit <object>
git replace [-f] --graft <commit> [<parent>…]
git replace [-f] --convert-graft-file
git replace -d <object>…
git replace [--format=<format>] [-l [<pattern>]]

DESCRIPTION

refs/replace/ 名前空間に replace 参照を追加します。

replace 参照の名前は、置き換えられるオブジェクトのSHA-1です。 replace 参照の内容は、置き換えるオブジェクトのSHA-1です。

置き換えられるオブジェクトと置き換えるオブジェクトは同じタイプである必要があります。 この制限は、 -f を使用して迂回(bypass)できます。

-f が指定されていない限り、 replace 参照はまだ存在していてはなりません。

置換されるオブジェクトと置換するオブジェクトに他の制限はありません。マージコミットは非マージコミットに置き換えることができ、その逆も可能です。

置換する参照は、デフォルトでは、到達可能性トラバーサル(剪定(prune)とパックと転送とfsck)実行するコマンドを除くすべてのGitコマンドで使用されます。

git の直後に --no-replace-objects オプションを使用すると、任意のコマンドでの置換参照の使用を無効にすることができます。

たとえば、 コミット foo がコミット bar に置き換えられた場合:

$ git --no-replace-objects cat-file commit foo

上記は、コミット foo に関する情報を表示します。

$ git cat-file commit foo

これはコミット bar に関する情報を表示します。

GIT_NO_REPLACE_OBJECTS 環境変数は、 --no-replace-objects オプションと同じ効果を達成するように設定できます。

OPTIONS

-f
--force

同じオブジェクトの既存の置換refが存在する場合、(失敗するのではなく)上書きされます。

-d
--delete

指定されたオブジェクトの既存の置換refsを削除します。

--edit <object>

オブジェクトのコンテンツを対話的に編集します。 <object> の既存のコンテンツは一時ファイルにきれいに表示(pretty-printed)され、そのファイルでエディタが起動され、エディタの編集結果がパースされて <object> と同じタイプの新しいオブジェクトが作成されます。続いて、置換refが作成され、 <object> が新しく作成されたオブジェクトに置き換えられます。エディタの選択方法の詳細については git-var(1) を参照してください。

--raw

編集するときにきれいに出力されたものではなく、生のオブジェクトの内容を提供します。現在、これはツリーにのみ影響し、バイナリ形式で表示されます。これは扱いが難しいですが、きれいに出力できないほど破損しているツリーを修復するときに役立ちます。バイナリデータをきれいに読み書きできるようにエディタを設定する必要がある場合があることに注意してください。

--graft <commit> [<parent>...]

graftコミットを作成します。 <commit> と同じ内容で新しいコミットが作成されますが、その親は <commit> の親ではなく [<parent>…] になります。続けて、置換refが作成され、 <commit> が新しく作成されたコミットに置き換えられます。 --convert-graft-file を使用して $GIT_DIR/info/grafts ファイルを変換し、代わりに置換refsを使用します。

--convert-graft-file

$GIT_DIR/info/grafts のすべてのエントリに対してgraftコミットを作成し、成功するとそのファイルを削除します。目的は、現在非推奨のgraftファイルからの移行の為にユーザーを支援することです。

-l <pattern>
--list <pattern>

指定されたパターンに一致する(またはパターンが指定されていない場合はすべての)オブジェクトの置換refをリストします。引数なしで「git replace」と入力すると、すべての置換refが一覧表示されます。

--format=<format>

リストするときに、指定の <format> を使用します。これには、「short」および「medium」および「long」のいずれかになります。 省略した場合、フォーマットはデフォルトで「short」になります。

FORMATS

以下の形式を使用できます:

  • short: <置換された sha1>

  • medium: <置換された sha1> → <置換する sha1>

  • long: <置換された sha1> (<置換された sha1 のタイプ>) → <置換する sha1> (<置換する sha1 のタイプ>)

CREATING REPLACEMENT OBJECTS

git-hash-object(1)git-rebase(1)git-filter-repo は、他のgitコマンドの中でも特に 既存のオブジェクトから置換オブジェクトを作成するために使用されます。 --edit オプションを git replace と一緒に使用して、既存のオブジェクトを編集することで置換オブジェクトを作成することもできます。

コミットの文字列の一部である多くの、ブロブまたはツリーまたはコミットを置き換える場合は、コミットの置換文字列を作成してから、コミットのターゲット文字列の先端にあるコミットのみを、コミットの置換文字列の先端にあるコミットに置き換えることができます。

BUGS

置き換えられたブロブまたはツリーをそれらを置き換えるものと比較すると、正しく機能しません。 また、 git reset --hard を使用して置換されたコミットに戻ると、ブランチは置換されたコミットではなく置換されたコミットに移動します。

保留中のオブジェクトに関連する「git rev-list」を使用すると、他の問題が発生する可能性があります。

SEE ALSO

GIT

Part of the git(1) suite