これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド git-update-index です。
プログラム:
NAME
git-update-index - ワーキングツリーのファイル内容をインデックスに登録する
SYNOPSIS
git 更新インデックス
[--追加] [--削除 | --強制削除] [--置換]
[--refresh] [-q] [--unmerged] [--ignore-missing]
[(--キャッシュ情報、 、 )...]
[--chmod=(+|-)x]
[--[いいえ-]仮定-不変]
[--[no-]スキップワークツリー]
[--ignore-サブモジュール]
[--[no-]分割インデックス]
[--[no-|force-]追跡されていないキャッシュ]
[--really-refresh] [--unresolve] [--再度 | -g]
[--情報のみ] [--インデックス情報]
[-z] [--stdin] [--index-version ]
[--詳細]
[--] [ ...]
DESCRIPTION
インデックスまたはディレクトリ キャッシュを変更します。 言及された各ファイルはインデックスに更新され、
どれか マージされていない or ニーズ 更新 状態がクリアされます。
参照 git-追加(1) 最も一般的な操作のいくつかを実行するためのよりユーザーフレンドリーな方法
インデックスに。
道 git 更新インデックス 通知されたハンドルファイルは、さまざまなを使用して変更できます
オプション:
OPTIONS
- 追加
指定されたファイルがまだインデックスにない場合は、追加されます。 デフォルトの動作は
新しいファイルを無視します。
- 削除する
指定されたファイルがインデックスにあるが見つからない場合、そのファイルは削除されます。 デフォルトの動作
削除されたファイルを無視することです。
-リフレッシュ
現在のインデックスを調べて、マージまたは更新が必要かどうかを確認します。
stat() 情報をチェックしています。
-q
静かな。 --refresh でインデックスの更新が必要であることが判明した場合、デフォルトの動作は次のとおりです。
エラーアウト。 このオプションにより、 git 更新インデックス とにかく続けます。
--ignore-サブモジュール
サブモジュールを更新しようとしないでください。 このオプションは、前に渡された場合にのみ尊重されます
--リフレッシュ。
--マージされていない
--refresh がインデックスでマージされていない変更を検出した場合、デフォルトの動作はエラーになります。
アウト。 このオプションにより、 git 更新インデックス とにかく続けます。
-無視-欠落
--refresh 中に不足しているファイルを無視します
--cacheinfo 、 、 、 --cacheinfo
指定した情報をインデックスに直接挿入します。 下位互換性のために、次のことができます。
また、これら XNUMX つの引数を XNUMX つの個別のパラメーターとして指定しますが、新しいユーザーは
単一パラメーター形式を使用することをお勧めします。
--インデックス情報
stdin からインデックス情報を読み取ります。
--chmod=(+|-)x
更新されたファイルに実行権限を設定します。
--[no-]変更されていないと仮定する
このフラグを指定すると、パスに記録されたオブジェクト名は更新されません。
代わりに、このオプションは、パスの「変更されていないと仮定する」ビットを設定/設定解除します。 とき
「変更されていないと仮定する」ビットがオンになっている場合、ユーザーはファイルを変更しないことを約束し、Git を許可します
ワーキングツリーファイルがインデックスに記録されているものと一致すると仮定します。 もし、あんたが
作業ツリー ファイルを変更したい場合は、ビットを設定解除して Git に伝える必要があります。 これは
非常に遅いファイルシステムで大きなプロジェクトを扱うときに役立つことがあります
lstat(2) システムコール (cifs など)。
インデックス内のこのファイルを変更する必要がある場合、Git は (正常に) 失敗します。
コミットにマージします。 したがって、想定されていない追跡対象ファイルが上流で変更された場合、
状況を手動で処理する必要があります。
--本当にリフレッシュ
いいね -リフレッシュ、しかし、統計情報を無条件にチェックします。
「変更されていないと仮定する」設定。
--[no-]スキップワークツリー
これらのフラグのいずれかが指定されている場合、パスに記録されるオブジェクト名は変更されません。
更新しました。 代わりに、これらのオプションは、パスの「skip-worktree」ビットを設定および設定解除します。
詳細については、以下のセクション「スキップ ワークツリー ビット」を参照してください。
-g, -- もう一度
Active Runs git 更新インデックス インデックス エントリがそれらとは異なるパス上にある
HEAD コミットから。
--未解決
復元します マージされていない or ニーズ 更新 マージ中のファイルの状態
たまたまクリア。
--情報のみ
すべてのオブジェクト データベースにオブジェクトを作成しないでください。 これに続く引数
国旗; オブジェクト ID をインデックスに挿入するだけです。
-- 強制削除
作業ディレクトリにまだそのようなファイルがある場合でも、インデックスからファイルを削除します。
(--remove を意味します。)
- 交換
デフォルトでは、インデックスにファイル パスが存在する場合、 git 更新インデックス 試みを拒否する
パス/ファイルを追加します。 同様に、ファイル パス/ファイルが存在する場合、ファイル パスを追加することはできません。
--replace フラグを使用すると、追加するエントリと競合する既存のエントリは
警告メッセージとともに自動的に削除されます。
--標準入力
コマンドラインからパスのリストを取得する代わりに、
標準入力。 デフォルトでは、パスは LF (つまり、XNUMX 行に XNUMX つのパス) で区切られます。
-詳細
インデックスから追加および削除されているものを報告します。
--index-version
結果のインデックスを指定されたオンディスク フォーマット バージョンに書き込みます。 サポートされているバージョン
2、3、および 4 です。現在のデフォルト バージョンは、extra かどうかに応じて 2 または 3 です。
git add -N などの機能が使用されます。
バージョン 4 は、インデックス サイズを 30% ~ 50% 削減する単純なパス名圧縮を実行します。
リポジトリが大きいため、ロード時間が短縮されます。 バージョン 4 は比較的若い
(1.8.0 年 2012 月に XNUMX で最初にリリースされました)。 JGit などの他の Git 実装
libgit2 はまだサポートしていない可能性があります。
-z
--stdin または --index-info でのみ意味があります。 パスは NUL 文字で区切られています
LFの代わりに。
--split-index、--no-split-index
分割インデックス モードを有効または無効にします。 有効にすると、インデックスは XNUMX つのファイルに分割されます。
$GIT_DIR/index および $GIT_DIR/sharedindex。 . 変更は
共有インデックス ファイルにすべてのインデックス エントリが含まれている間、$GIT_DIR/index は変更されません。
分割インデックス モードが既に有効になっていて、 --split-index が再度指定されている場合、すべての変更
$GIT_DIR/index 内のファイルは、共有インデックス ファイルにプッシュ バックされます。 このモードは、
読み取りまたは書き込みにかなりの時間がかかる非常に大きなインデックス。
--untracked-cache、--untracked-cache
追跡されないキャッシュ拡張機能を有効または無効にします。 これにより、次のコマンドの速度が向上する可能性があります。
gitステータスなどの追跡されていないファイルの特定が含まれます。 基礎となる運用
システムとファイル システムは、ファイルが追加された場合、またはディレクトリの st_mtime フィールドを変更する必要があります。
そのディレクトリで削除されます。
--force-untracked-cache
安全のために、 --untracked-cache は作業ディレクトリでテストを実行して確認します
非追跡キャッシュを使用できます。 これらのテストには数秒かかる場合があります。
--force-untracked-cache を使用して、テストをスキップできます。
--
それ以上の引数をオプションとして解釈しないでください。
操作するファイル。 で始まるファイルに注意してください。 . 破棄されます。 これには ./file が含まれます
および dir/./file. これが望ましくない場合は、よりクリーンな名前を使用してください。 同じことが当てはまります
ディレクトリ終了 / とパス //
使用する --リフレッシュ
-リフレッシュ 新しいsha1ファイルを計算したり、インデックスを最新のものにしたりしません
モード/コンテンツの変更。 しかし、それは何 ありません 行うことは、ファイルの統計情報を「再照合」することです
これにより、変更されていないファイルのインデックスを更新できますが、
統計エントリが古くなっている場所。
たとえば、これを実行した後、 git 読み取りツリー、統計インデックスをリンクする
適切なファイルを含む詳細。
使用する --キャッシュ情報 OR --情報のみ
--キャッシュ情報 現在の作業ディレクトリにないファイルを登録するために使用されます。 これ
最小限のチェックアウトのマージに役立ちます。
パスにモードと sha1 を持つファイルがあるふりをするには、次のように言います。
$ git update-index --cacheinfo 、 、
--情報のみ ファイルをオブジェクトデータベースに配置せずに登録するために使用されます。 これは
ステータスのみのリポジトリに役立ちます。
両方 --キャッシュ情報 --情報のみ 同様に動作します。インデックスは更新されますが、オブジェクトは更新されます
データベースではありません。 --キャッシュ情報 オブジェクトがデータベースにあるがファイルにある場合に役立ちます
ローカルでは利用できません。 --情報のみ ファイルが利用可能な場合に便利ですが、そうではありません
オブジェクト データベースを更新したい。
使用する --インデックス情報
--index-info は、複数のエントリ定義をフィードできる、より強力なメカニズムです
標準入力から、特にスクリプト用に設計されています。 の入力を取ることができます
XNUMX つの形式:
1. モード SP sha1 TAB パス
最初の形式は「git-apply --index-info」が報告するもので、
3-way マージでフォールバックするときに偽のマージ ベース ツリーに使用される部分ツリー。
2. モード SP タイプ SP sha1 TAB パス
XNUMX番目の形式は詰め込むことです git ls ツリー インデックスファイルに出力します。
3. モード SP sha1 SP ステージ TAB パス
この形式は、高次のステージをインデックス ファイルに入れ、一致させるためのものです。 git ls-ファイル
- ステージ 出力。
より高いステージのエントリをインデックスに配置するには、パスを最初にフィードして削除する必要があります。
mode=0 エントリをパスに入力し、必要な入力行を XNUMX 番目の形式で入力します。
たとえば、次のインデックスから開始します。
$ git ls-files -s
100644 8a1218a1024a212bb3db30becd860315f9f3ac52 0 frotz
次の入力を --index-info にフィードできます。
$ git update-index --index-info
0 0000000000000000000000000000000000000000フロッツ
100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1 frotz
100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz
入力の最初の行は、パスを削除するモードとして 0 をフィードします。 SHA-1 は
適切にフォーマットされている限り重要です。 次に、1 番目と XNUMX 番目の行がステージ XNUMX にフィードし、
そのパスのステージ 2 エントリ。 上記の後、次のようになります。
$ git ls-files -s
100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1 frotz
100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz
使用する "推定 変更なし" BIT
Git での多くの操作は、効率的に行うためにファイルシステムに依存しています。 lstat(2)
これにより、作業ツリー ファイルの st_mtime 情報を安価にチェックできます。
ファイルの内容がインデックス ファイルに記録されているバージョンから変更されているかどうかを確認します。
残念ながら、一部のファイルシステムは非効率的です lstat(2)。 ファイルシステムが次のいずれかの場合
変更していないパスに「変更されていないと仮定する」ビットを設定して、Git が変更されないようにすることができます。
このチェックを行います。 パスにこのビットを設定しても、Git がパスをチェックするわけではないことに注意してください。
ファイルの内容が変更されているかどうかを確認します。これにより、Git はチェックを省略し、
持っていると仮定します かわった。 作業ツリー ファイルに変更を加えるときは、次のことを行う必要があります。
前または後に、「変更されていないと仮定する」ビットをドロップして、明示的に Git に通知します。
それらを変更します。
「変更を想定しない」ビットを設定するには、 --assume-unchanged オプションを使用します。 設定を解除するには、使用します
---前提条件は変更されていません。 「変更されていないと仮定する」ビットが設定されているファイルを確認するには、git を使用します。
ls-files -v (参照 git-ls-ファイル(1))。
このコマンドは、core.ignorestat 構成変数を調べます。 これが true の場合、パス
git update-index paths... で更新され、他の Git コマンドで更新されたパス
インデックスと作業ツリーの両方を更新します (例: git 適用する - 索引, git チェックアウトインデックス -u, git
読み取りツリー -u) は、自動的に「変更されていないと仮定する」とマークされます。 「変わらないと仮定する」ことに注意してください
ビットは git update-index --refresh が作業ツリー ファイルがインデックスと一致することを検出した場合に設定します
(「変更されていないと仮定する」とマークしたい場合は、 git update-index --really-refresh を使用してください)。
例
すでにチェックアウトされているファイルのみを更新およびリフレッシュするには:
$ git checkout-index -n -f -a && git update-index --ignore-missing --refresh
core.ignorestat が設定された非効率的なファイルシステム
$ git update-index --really-refresh (1)
$ git update-index --no-assume-unchanged foo.c (2)
$ git diff --名前のみ (3)
$編集foo.c
$ git diff --名前のみ (4)
M foo.c
$ git update-index foo.c (5)
$ git diff --名前のみ (6)
$編集foo.c
$ git diff --名前のみ (7)
$ git update-index --no-assume-unchanged foo.c (8)
$ git diff --名前のみ (9)
M foo.c
1. 軍隊 lstat(2) インデックスに一致するパスの「変更されていないと仮定する」ビットを設定します。
2. 編集するパスをマークします。
3. これはします lstat(2) そして、インデックスがパスに一致することを見つけます。
4. これはします lstat(2) および検索インデックスが行う パスを一致させます。
5. 新しいバージョンをインデックス セットに登録すると、「変更されていないと仮定する」ビットが設定されます。
6. そしてそれは変わらないと仮定されます。
7. 編集した後でも。
8. 事後に変化を知ることができます。
9. 今ではチェックします lstat(2) 変更されていることがわかります。
SKIP ワークツリー BIT
スキップ ワークツリー ビットは、XNUMX つの (長い) 文で定義できます。
skip-worktree としてマークされている場合、Git は作業ディレクトリのバージョンが最新であると見なし、
代わりにインデックス バージョンをお読みください。
詳しく説明すると、「読み取り」とは、ファイルの存在を確認すること、ファイル属性またはファイルを読み取ることを意味します
コンテンツ。 作業ディレクトリのバージョンは、存在する場合と存在しない場合があります。 存在する場合、その内容
インデックス バージョンと一致する場合と一致しない場合があります。 書き込みはこのビットの影響を受けません。
安全は依然として最優先事項です。 Git に注意してください できる 作業ディレクトリファイルを更新します。つまり、
安全に実行できる場合 (つまり、作業ディレクトリのバージョンがインデックスと一致する場合)、skip-worktree とマークされます。
バージョン)
このビットは、assume-unchange ビットと似ていますが、その目的は異なります。
変更されていないビットを想定します。 Skip-worktree は、次の場合、assume-unchange ビットよりも優先されます。
両方設定されています。
CONFIGURATION
このコマンドは、core.filemode 構成変数を尊重します。 リポジトリが
実行可能ビットが信頼できないファイルシステムの場合、これは次のように設定する必要があります false (参照してください ギット-
設定(1))。 これにより、コマンドはファイル モードの違いを無視します。
実行可能ビットのみが異なる場合は、ファイルシステムのインデックスとファイルモード。 そのような上で
不幸なファイルシステム、使用する必要があるかもしれません git 更新インデックス --chmod=.
まったく同様に、core.symlinks 構成変数が次のように設定されている場合 false (参照してください ギット-
設定(1))、シンボリック リンクはプレーン ファイルとしてチェックアウトされ、このコマンドはチェックアウトされません。
記録されたファイル モードをシンボリック リンクから通常のファイルに変更します。
このコマンドは、core.ignorestat 構成変数を調べます。 見る 使い方 "推定 変更なし"
ビット 上記のセクション。
このコマンドは、core.trustctime 構成変数も参照します。 次の場合に役立ちます。
i ノードの変更時刻は、Git の外部の何か (ファイル システム クローラー) によって定期的に変更されます。
およびバックアップ システムは、処理されたファイルをマークするために ctime を使用します) (を参照)。 git-config(1))。
onworks.net サービスを使用してオンラインで git-update-index を使用する