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