セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット作成
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.48.1 → 2.49.0 変更なし
-
2.48.0
2025-01-10
- 2.46.1 → 2.47.2 変更なし
-
2.46.0
2024-07-29
- 2.45.1 → 2.45.3 変更なし
-
2.45.0
2024-04-29
- 2.43.1 → 2.44.3 変更なし
-
2.43.0
2023-11-20
- 2.30.1 → 2.42.4 変更なし
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 変更なし
-
2.29.0
2020-10-19
- 2.27.1 → 2.28.1 変更なし
-
2.27.0
2020-06-01
- 2.19.3 → 2.26.3 変更なし
-
2.19.2
2018-11-21
- 2.18.1 → 2.19.1 変更なし
-
2.18.0
2018-06-21
- 2.7.6 → 2.17.6 変更なし
-
2.6.7
2017-05-05
- 2.2.3 → 2.5.6 変更なし
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
概要
git update-ref [-m <reason>] [--no-deref] (-d <ref> [<old-oid>] | [--create-reflog] <ref> <new-oid> [<old-oid>] | --stdin [-z])
説明
2つの引数が与えられた場合、シンボリックrefを間接参照して、<new-oid>を<ref>に格納します。例: git update-ref HEAD <new-oid>
は現在のブランチのHEADを新しいオブジェクトに更新します。
3つの引数が与えられた場合、シンボリックrefを間接参照して、<ref>の現在の値が<old-oid>と一致することを確認した後、<new-oid>を<ref>に格納します。例: git update-ref refs/heads/master <new-oid> <old-oid>
は、masterブランチのHEADが現在<old-oid>である場合にのみ、それを<new-oid>に更新します。作成するrefが存在しないことを確認するために、<old-oid>として40個の"0"または空文字列を指定できます。
最後の引数はオブジェクト名です。オプションなしのこのコマンドは、シンボリックrefを別のrefを指すように更新することをサポートしていません (git-symbolic-ref[1] を参照)。しかし、git update-ref --stdin
にはsymref-*
コマンドがあり、通常のrefとシンボリックrefを同じトランザクションでコミットできます。
--no-derefが指定された場合、シンボリックポインタを辿った結果ではなく、<ref>自体が上書きされます。
-d
を付けると、指定された<ref>がまだ<old-oid>を含んでいることを確認した後、その<ref>を削除します。
--stdin
を付けると、update-refは標準入力から指示を読み込み、すべての変更をまとめて実行します。以下の形式でコマンドを指定します。
update SP <ref> SP <new-oid> [SP <old-oid>] LF create SP <ref> SP <new-oid> LF delete SP <ref> [SP <old-oid>] LF verify SP <ref> [SP <old-oid>] LF symref-update SP <ref> SP <new-target> [SP (ref SP <old-target> | oid SP <old-oid>)] LF symref-create SP <ref> SP <new-target> LF symref-delete SP <ref> [SP <old-target>] LF symref-verify SP <ref> [SP <old-target>] LF option SP <opt> LF start LF prepare LF commit LF abort LF
--create-reflog
を付けると、通常は作成されない場合でも、update-refは各refに対してreflogを作成します。
空白を含むフィールドは、C言語のソースコードにおける文字列のように引用符で囲み、バックスラッシュでエスケープします。つまり、二重引用符で囲み、バックスラッシュエスケープを使用します。ゼロ値を指定するには、40個の"0"または空文字列を使用します。不足している値を指定するには、その値とそれに先行するSPを完全に省略します。
または、引用符なしでNULL終端形式で指定するには、-z
を使用します。
update SP <ref> NUL <new-oid> NUL [<old-oid>] NUL create SP <ref> NUL <new-oid> NUL delete SP <ref> NUL [<old-oid>] NUL verify SP <ref> NUL [<old-oid>] NUL symref-update SP <ref> NUL <new-target> [NUL (ref NUL <old-target> | oid NUL <old-oid>)] NUL symref-create SP <ref> NUL <new-target> NUL symref-delete SP <ref> [NUL <old-target>] NUL symref-verify SP <ref> [NUL <old-target>] NUL option SP <opt> NUL start NUL prepare NUL commit NUL abort NUL
この形式では、ゼロ値を指定するには40個の"0"を使用し、不足している値を指定するには空文字列を使用します。
いずれの形式でも、値はGitがオブジェクト名として認識する任意の形式で指定できます。他の形式のコマンドや繰り返し指定された<ref>はエラーになります。コマンドの意味は以下の通りです。
- update
-
指定された場合、<old-oid>を検証した後、<ref>を<new-oid>に設定します。更新後にrefが存在しないことを保証するにはゼロの<new-oid>を、更新前にrefが存在しないことを保証するにはゼロの<old-oid>を指定します。
- create
-
<ref>が存在しないことを確認した後、<new-oid>で<ref>を作成します。指定された<new-oid>はゼロであってはなりません。
- delete
-
指定された場合、<old-oid>で存在することを確認した後、<ref>を削除します。指定された場合、<old-oid>はゼロであってはなりません。
- symref-update
-
指定された場合、<old-target>または<old-oid>を検証した後、<ref>を<new-target>に設定します。更新前にrefが存在しないことを保証するには、ゼロの<old-oid>を指定します。
- verify
-
<ref>を<old-oid>に対して検証しますが、変更はしません。<old-oid>がゼロまたは不足している場合、そのrefは存在してはなりません。
symref-create: <ref>が存在しないことを確認した後、<new-target>でシンボリックref <ref>を作成します。
- symref-delete
-
指定された場合、<old-target>で存在することを確認した後、<ref>を削除します。
- symref-verify
-
シンボリック<ref>を<old-target>に対して検証しますが、変更はしません。<old-target>が不足している場合、そのrefは存在してはなりません。
no-deref
モードでのみ使用できます。 - option
-
<ref>を指定する次のコマンドの動作を変更します。唯一有効なオプションは、シンボリックrefの間接参照を避けるための
no-deref
です。 - start
-
トランザクションを開始します。非トランザクションセッションとは対照的に、トランザクションは明示的なコミットなしでセッションが終了した場合、自動的に中止されます。このコマンドは、現在のトランザクションが既にコミットまたは中止されている場合、新しい空のトランザクションを作成することがあります。
- prepare
-
トランザクションをコミットする準備をします。これにより、キューに入れられたすべての参照更新のロックファイルが作成されます。いずれかの参照をロックできなかった場合、トランザクションは中止されます。
- commit
-
トランザクション用にキューに入れられたすべての参照更新をコミットし、トランザクションを終了します。
- abort
-
トランザクションを中止し、トランザクションが準備済みの状態にある場合はすべてのロックを解放します。
すべての<ref>が一致する<old-oid>と共に同時にロックできる場合、すべての変更が実行されます。そうでない場合、変更は実行されません。個々の<ref>はアトミックに更新または削除されますが、並行して読み取るリーダーは、変更の一部しか見ることができない場合があります。
更新のログ記録
設定パラメータ "core.logAllRefUpdates" がtrueであり、そのrefが "refs/heads/"、"refs/remotes/"、"refs/notes/" のいずれかの下にあるか、HEADやORIG_HEADのような擬似refである場合、またはファイル "$GIT_DIR/logs/<ref>" が存在する場合、git update-ref
はログファイル "$GIT_DIR/logs/<ref>" (ログ名を作成する前にすべてのシンボリックrefを間接参照します) にref値の変更を記述した行を追加します。ログ行の形式は以下の通りです。
oldsha1 SP newsha1 SP committer LF
ここで、"oldsha1"は<ref>に以前格納されていた40文字の16進値、"newsha1"は<new-oid>の40文字の16進値、「committer」は標準のGitコミッター識別形式でのコミッターの名前、メールアドレス、日付です。
オプションで -m を使用
oldsha1 SP newsha1 SP committer TAB message LF
ここで、すべてのフィールドは上記で説明した通りで、「message」は -m オプションに提供された値です。
現在のユーザーが新しいログファイルを作成できない場合、既存のログファイルに追加できない場合、またはコミッター情報が利用できない場合、更新は失敗します (<ref>は変更されません)。
注釈
シンボリックrefは当初、シンボリックリンクを使用して実装されていました。すべてのファイルシステムがシンボリックリンクをサポートしているわけではないため、これは現在非推奨です。
このコマンドは、"refs/" で始まる場合にのみ実際のシンボリックリンクを辿ります。それ以外の場合は、単にそれらを読み込み、通常のファイルとして更新しようとします (つまり、ファイルシステムがそれらを辿ることを許可しますが、そのようなシンボリックリンクを別の場所への通常のファイル名で上書きします)。
GIT
git[1] スイートの一部