セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.50.1 変更なし
-
2.50.0
2025-06-16
- 2.48.1 → 2.49.1 変更なし
-
2.48.0
2025-01-10
- 2.47.1 → 2.47.3 変更なし
-
2.47.0
2024-10-06
- 2.45.3 → 2.46.4 変更なし
- 2.45.2 変更なし
-
2.45.1
2024-04-29
- 2.44.3 → 2.45.0 変更なし
- 2.44.2 変更なし
-
2.44.1
2024-04-19
- 2.43.6 → 2.44.0 変更なし
- 2.43.5 変更なし
-
2.43.4
2024-04-19
- 2.43.1 → 2.43.3 変更なし
-
2.43.0
2023-11-20
- 2.42.4 変更なし
- 2.42.3 変更なし
-
2.42.2
2024-04-19
- 2.41.3 → 2.42.1 変更なし
- 2.41.2 変更なし
-
2.41.1
2024-04-19
- 2.40.4 → 2.41.0 変更なし
- 2.40.3 変更なし
-
2.40.2
2024-04-19
- 2.40.0 → 2.40.1 変更なし
- 2.39.5 変更なし
-
2.39.4
2024-04-19
- 2.39.3 変更なし
-
2.39.2
2023-02-06
- 2.39.1 変更なし
-
2.39.0
2022-12-12
- 2.38.1 → 2.38.5 変更なし
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 変更なし
-
2.35.0
2022-01-24
- 2.30.2 → 2.34.8 変更なし
- 2.30.1 変更なし
- 2.22.2 → 2.30.0 変更なし
-
2.22.1
2019-08-11
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 変更なし
-
2.21.0
2019-02-24
- 2.19.1 → 2.20.5 変更なし
-
2.19.0
2018-09-10
- 2.11.4 → 2.18.5 変更なし
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
- 2.7.6 → 2.8.6 変更なし
-
2.6.7
2017-05-05
- 2.1.4 → 2.5.6 変更なし
-
2.0.5
2014-12-17
概要
git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs] [--[no-]full] [--strict] [--verbose] [--lost-found] [--[no-]dangling] [--[no-]progress] [--connectivity-only] [--[no-]name-objects] [--[no-]references] [<object>…]
オプション
- <object>
-
到達不能トレースのヘッドとして扱うオブジェクト。
オブジェクトが指定されていない場合、git fsck はデフォルトでインデックスファイル、
refs名前空間内のすべての SHA-1 参照、およびすべての reflog (--no-reflogsが指定されていない限り) をヘッドとして使用します。 - --unreachable
-
存在するが、どの参照ノードからも到達できないオブジェクトを出力します。
- --[no-]dangling
-
存在するが、_直接_使用されていないオブジェクトを出力します (デフォルト)。この情報を出力から除外するには、
--no-danglingを使用できます。 - --root
-
ルートノードを報告します。
- --tags
-
タグを報告します。
- --cache
-
インデックスに記録されているすべてのオブジェクトを、到達不能トレースのヘッドノードとして考慮します。
- --no-reflogs
-
reflog のエントリによってのみ参照されるコミットを到達可能であるとみなさないでください。このオプションは、かつては ref に存在したが、今は存在しないが、対応する reflog にはまだ存在するコミットを検索することを目的としています。
- --full
-
GIT_OBJECT_DIRECTORY ($GIT_DIR/objects) 内のオブジェクトだけでなく、GIT_ALTERNATE_OBJECT_DIRECTORIES または $GIT_DIR/objects/info/alternates にリストされている代替オブジェクトプール、および $GIT_DIR/objects/pack と代替オブジェクトプール内の対応するパックサブディレクトリにあるパックされた Git アーカイブ内のオブジェクトもチェックします。これは現在デフォルトであり、
--no-fullでオフにできます。 - --connectivity-only
-
到達可能なオブジェクトの接続性のみをチェックし、到達可能なタグ、コミット、またはツリーによって参照されるオブジェクトが存在することを確認します。これにより、ブロブを完全に読み取ることを回避することで操作が高速化されます (ただし、参照されるブロブが存在することはチェックされます)。これにより、コミットとツリーの破損は検出されますが、意味論的なチェック (例: フォーマットエラー) は行われません。ブロブオブジェクトの破損はまったく検出されません。
到達不能なタグ、コミット、およびツリーも、履歴のぶら下がったセグメントの先端を見つけるためにアクセスされます。この出力に関心がなく、さらに高速化したい場合は、
--no-danglingを使用してください。 - --strict
-
より厳格なチェックを有効にします。特に、古いバージョンの Git で作成された g+w ビットが設定されたファイルモードをキャッチします。Linux カーネル、Git 自体、スパースリポジトリを含む既存のリポジトリには、このチェックをトリガーする古いオブジェクトがありますが、このフラグを使用して新しいプロジェクトをチェックすることをお勧めします。
- --verbose
-
おしゃべりになります。
- --lost-found
-
ぶら下がったオブジェクトをタイプに応じて .git/lost-found/commit/ または .git/lost-found/other/ に書き込みます。オブジェクトがブロブの場合、その内容はオブジェクト名ではなくファイルに書き込まれます。
- --name-objects
-
到達可能なオブジェクトの名前を表示する際、SHA-1 に加えて、それらが_どのように_到達可能であるかを記述する名前も表示します。git-rev-parse[1] と互換性があり、たとえば
HEAD@{1234567890}~25^2:src/のようになります。 - --[no-]progress
-
デフォルトでは、標準エラー出力ストリームがターミナルに接続されている場合、
--no-progressまたは--verboseが指定されていない限り、進捗状況が報告されます。--progressは、標準エラー出力ストリームがターミナルに接続されていない場合でも進捗状況を強制します。 - --[no-]references
-
git refs verify を介して参照データベースの整合性をチェックするかどうかを制御します。git-refs[1] を参照してください。デフォルトでは参照データベースをチェックします。
設定
このセクションのこの行より下のすべての内容は、git-config[1] ドキュメントから選択的に含まれています。内容はそちらで見られるものと同じです。
- fsck.<msg-id>
-
fsck の実行中に、現在のバージョンの Git では生成されない、また
transfer.fsckObjectsが設定されている場合は送受信されない、古いデータに関する問題が Git で見つかることがあります。この機能は、そのようなデータを含む古いリポジトリでの作業をサポートすることを目的としています。fsck.<msg-id> を設定すると、git-fsck[1] で認識されますが、そのようなデータのプッシュを受け入れるにはreceive.fsck.<msg-id> を設定し、クローンまたはフェッチするにはfetch.fsck.<msg-id> を設定します。残りのドキュメントでは簡潔にするために
fsck.*について説明していますが、対応するreceive.fsck.*およびfetch.fsck.*変数にも同じことが当てはまります。color.uiやcore.editorのような変数とは異なり、receive.fsck.<msg-id> およびfetch.fsck.<msg-id> 変数は、設定されていない場合でもfsck.<msg-id> 設定にフォールバックしません。異なる状況で同じ fsck 設定を統一して構成するには、3 つすべてを同じ値に設定する必要があります。fsck.<msg-id> が設定されている場合、fsck.<msg-id> 設定を構成することで、エラーを警告に切り替えたり、その逆を行うことができます。<msg-id> は fsck メッセージ ID であり、値はerror、warn、またはignoreのいずれかです。便宜上、fsck はエラー/警告の前にメッセージ ID をプレフィックスとして付けます。たとえば、"missingEmail: invalid author/committer line - missing email" は、fsck.missingEmail=ignoreを設定すると、その問題が非表示になることを意味します。一般的に、問題のあるオブジェクトが共有する破損の種類を無視するようにリストする代わりに、
fsck.skipListを使用して問題のある既存のオブジェクトを列挙する方が良いでしょう。後者を行うと、同じ破損の新しいインスタンスが見過ごされる可能性があるためです。未知の
fsck.<msg-id> 値を設定すると fsck は停止しますが、receive.fsck.<msg-id> およびfetch.fsck.<msg-id> の場合、Git は警告するだけです。<msg-id> のサポートされている値については、git-fsck[1] の
FsckMessagesセクションを参照してください。 - fsck.skipList
-
致命的ではない方法で破損していることがわかっており、無視すべきオブジェクト名のリストへのパス (つまり、1 行に 1 つの省略されていない SHA-1)。Git 2.20 以降のバージョンでは、コメント (#)、空行、および先頭と末尾の空白は無視されます。古いバージョンでは、1 行の SHA-1 以外のすべてがエラーになります。
この機能は、無効なコミッターのメールアドレスなど、安全に無視できるエラーを含む初期コミットにもかかわらず、確立されたプロジェクトを受け入れる必要がある場合に役立ちます。注: この設定では破損したオブジェクトをスキップすることはできません。
fsck.<msg-id> と同様に、この変数には対応するreceive.fsck.skipListおよびfetch.fsck.skipListバリアントがあります。color.uiやcore.editorのような変数とは異なり、receive.fsck.skipListおよびfetch.fsck.skipList変数は、設定されていない場合でもfsck.skipList設定にフォールバックしません。異なる状況で同じ fsck 設定を統一して構成するには、3 つすべてを同じ値に設定する必要があります。古いバージョンの Git (2.20 以前) では、オブジェクト名のリストはソートされている必要があると文書化されていました。これは決して必須ではありませんでした。オブジェクト名は任意の順序で表示されていましたが、リストを読み取る際に、内部バイナリ検索実装の目的でリストがソートされているかどうかを追跡しており、ソート済みのリストでは作業を節約できました。途方もないリストがない限り、リストを事前にソートするために特別な努力をする必要はありませんでした。Git バージョン 2.20 以降ではハッシュ実装が使用されているため、リストを事前にソートする必要はなくなりました。
考察
git-fsck は SHA-1 と一般的なオブジェクトの健全性をテストし、結果として得られる到達可能性とその他すべてを完全に追跡します。見つかった破損 (欠落または不正なオブジェクト) を出力し、--unreachable フラグを使用すると、存在するが指定されたヘッドノード (または上述のデフォルトセット) のいずれからも到達できないオブジェクトも出力します。
破損したオブジェクトはバックアップや他のアーカイブで探す必要があります (つまり、それらを削除して、他の誰かが破損したオブジェクトを持っていることを期待して他のサイトと rsync することができます)。
core.commitGraph が true の場合、コミットグラフファイルも git commit-graph verify を使用して検査されます。git-commit-graph[1] を参照してください。
抽出された診断
- 到達不能 <type> <object>
-
<type> オブジェクト <object> は、実際にはツリーやコミットで直接的または間接的に参照されていません。これは、指定していない別のルートノードがあるか、ツリーが破損している可能性があることを意味します。ルートノードを見逃していない場合は、到達不能なノードは使用できないため削除しても構いません。
- 欠落 <type> <object>
-
<type> オブジェクト <object> は参照されていますが、データベースには存在しません。
- ぶら下がり <type> <object>
-
<type> オブジェクト <object> はデータベースに存在しますが、_直接_使用されていません。ぶら下がったコミットはルートノードである可能性があります。
- ハッシュ不一致 <object>
-
データベースには、ハッシュがオブジェクトデータベースの値と一致しないオブジェクトがあります。これは深刻なデータ整合性の問題を示しています。
FSCK メッセージ
以下に、git fsck が検出するエラーの種類と、それぞれのエラーの意味、およびデフォルトの重大度をリストします。"(FATAL)" とマークされているエラー以外のエラーの重大度は、対応する fsck.<msg-id> 設定変数を設定することで調整できます。
badDate-
(ERROR) author/committer 行の無効な日付形式。
badDateOverflow-
(ERROR) author/committer 行の無効な日付値。
badEmail-
(ERROR) author/committer 行の無効なメールアドレス形式。
badFilemode-
(INFO) ツリーに不正なファイルモードのエントリが含まれています。
badName-
(ERROR) author/committer 名が空です。
badObjectSha1-
(ERROR) オブジェクトの SHA1 が不正です。
badPackedRefEntry-
(ERROR) "packed-refs" ファイルに無効なエントリが含まれています。
badPackedRefHeader-
(ERROR) "packed-refs" ファイルに無効なヘッダが含まれています。
badParentSha1-
(ERROR) コミットオブジェクトの親 SHA1 が不正です。
badRefContent-
(ERROR) 参照の内容が不正です。
badRefFiletype-
(ERROR) 参照のファイルタイプが不正です。
badRefName-
(ERROR) 参照の形式が無効です。
badReferentName-
(ERROR) シンボリック参照の参照名が無効です。
badTagName-
(INFO) タグの形式が無効です。
badTimezone-
(ERROR) author/committer 行に無効なタイムゾーンが見つかりました。
badTree-
(ERROR) ツリーを解析できません。
badTreeSha1-
(ERROR) ツリーの形式が無効です。
badType-
(ERROR) 無効なオブジェクトタイプが見つかりました。
duplicateEntries-
(ERROR) ツリーに重複するファイルエントリが含まれています。
emptyName-
(WARN) パスに空の名前が含まれています。
emptyPackedRefsFile-
(INFO) "packed-refs" ファイルが空です。このエラーが発生した場合は、git@vger.kernel.org メーリングリストに報告してください。ごく初期のバージョンの Git のみがそのような空の "packed_refs" ファイルを作成したため、将来的にはこの規則を厳格化する可能性があります。
extraHeaderEntry-
(IGNORE)
taggerの後に余分なヘッダが見つかりました。 fullPathname-
(WARN) パスに "/" で始まるフルパスが含まれています。
gitattributesBlob-
(ERROR)
.gitattributesに非ブロブが見つかりました。 gitattributesLarge-
(ERROR)
.gitattributesブロブが大きすぎます。 gitattributesLineLength-
(ERROR)
.gitattributesブロブに長すぎる行が含まれています。 gitattributesMissing-
(ERROR)
.gitattributesブロブを読み取ることができません。 gitattributesSymlink-
(INFO)
.gitattributesはシンボリックリンクです。 gitignoreSymlink-
(INFO)
.gitignoreはシンボリックリンクです。 gitmodulesBlob-
(ERROR)
.gitmodulesに非ブロブが見つかりました。 gitmodulesLarge-
(ERROR)
.gitmodulesファイルが大きすぎて解析できません。 gitmodulesMissing-
(ERROR)
.gitmodulesブロブを読み取ることができません。 gitmodulesName-
(ERROR) サブモジュール名が無効です。
gitmodulesParse-
(INFO)
.gitmodulesブロブを解析できませんでした。
gitmodulesLarge; (ERROR) .gitmodules ブロブが大きすぎて解析できません。
gitmodulesPath-
(ERROR)
.gitmodulesパスが無効です。 gitmodulesSymlink-
(ERROR)
.gitmodulesはシンボリックリンクです。 gitmodulesUpdate-
(ERROR) 無効なサブモジュール更新設定が見つかりました。
gitmodulesUrl-
(ERROR) 無効なサブモジュール URL が見つかりました。
hasDot-
(WARN) ツリーに
.という名前のエントリが含まれています。 hasDotdot-
(WARN) ツリーに
..という名前のエントリが含まれています。 hasDotgit-
(WARN) ツリーに
.gitという名前のエントリが含まれています。 largePathname-
(WARN) ツリーに非常に長いパス名のエントリが含まれています。
fsck.largePathnameの値にコロンが含まれている場合、その値が許容される最大長として使用されます (例: "warn:10" は 11 バイト以上のパスコンポーネントについて警告します)。デフォルト値は 4096 です。 mailmapSymlink-
(INFO)
.mailmapはシンボリックリンクです。 missingAuthor-
(ERROR) Author が欠落しています。
missingCommitter-
(ERROR) Committer が欠落しています。
missingEmail-
(ERROR) author/committer 行にメールアドレスが欠落しています。
missingNameBeforeEmail-
(ERROR) author/committer 行のメールアドレスの前に名前が欠落しています。
missingObject-
(ERROR) タグオブジェクトに
object行が欠落しています。 missingSpaceBeforeDate-
(ERROR) author/committer 行の日付の前にスペースが欠落しています。
missingSpaceBeforeEmail-
(ERROR) author/committer 行のメールアドレスの前にスペースが欠落しています。
missingTag-
(ERROR) タグオブジェクトの
type行の後に予期しない終わり。 missingTagEntry-
(ERROR) タグオブジェクトに
tag行が欠落しています。 missingTaggerEntry-
(INFO) タグオブジェクトに
tagger行が欠落しています。 missingTree-
(ERROR) コミットオブジェクトに
tree行が欠落しています。 missingType-
(ERROR) タグオブジェクトの
type行のタイプ値が無効です。 missingTypeEntry-
(ERROR) タグオブジェクトに
type行が欠落しています。 multipleAuthors-
(ERROR) コミットに複数の author 行が見つかりました。
nulInCommit-
(WARN) コミットオブジェクトの本体に NUL バイトが見つかりました。
nulInHeader-
(FATAL) オブジェクトヘッダに NUL バイトが存在します。
nullSha1-
(WARN) ツリーにヌル SHA1 を指すエントリが含まれています。
packedRefEntryNotTerminated-
(ERROR) "packed-refs" ファイルに改行で終了していないエントリが含まれています。
packedRefUnsorted-
(ERROR) "packed-refs" ファイルがソートされていません。
refMissingNewline-
(INFO) 改行 (LF) で終わらないルーズ参照。有効な Git 実装ではこのようなルーズ参照ファイルは作成されなかったため、将来的にはエラーになる可能性があります。このようなファイルを作成したツールを知る必要があるため、このエラーが発生した場合は git@vger.kernel.org メーリングリストに報告してください。
symlinkRef-
(INFO) シンボリックリンクがシンボリック参照として使用されています。シンボリック参照としてシンボリックリンクを作成するサポートを削除する実現可能性を評価しているため、このエラーが発生した場合は git@vger.kernel.org メーリングリストに報告してください。
symrefTargetIsNotARef-
(INFO) シンボリック参照のターゲットがルート参照も "refs/" で始まる参照も指していません。
gitsymbolic-refを使用して "ref" の外部を指すシンボリック参照を作成することは許可していますが、将来的には規則を厳格化する可能性があります。このようなファイルを作成したツールを知る必要があるため、このエラーが発生した場合は git@vger.kernel.org メーリングリストに報告してください。 trailingRefContent-
(INFO) ルーズ参照に末尾のコンテンツがあります。有効な Git 実装ではこのようなルーズ参照ファイルは作成されなかったため、将来的にはエラーになる可能性があります。このようなファイルを作成したツールを知る必要があるため、このエラーが発生した場合は git@vger.kernel.org メーリングリストに報告してください。
treeNotSorted-
(ERROR) ツリーが正しくソートされていません。
unknownType-
(ERROR) 未知のオブジェクトタイプが見つかりました。
unterminatedHeader-
(FATAL) オブジェクトヘッダに改行コードが欠落しています。
zeroPaddedDate-
(ERROR) author/committer 行にゼロパディングされた日付が見つかりました。
zeroPaddedFilemode-
(WARN) ツリーにゼロパディングされたファイルモードが見つかりました。
GIT
git[1]スイートの一部