セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.48.1 → 2.49.0 変更なし
-
2.48.0
2025-01-10
- 2.47.1 → 2.47.2 変更なし
-
2.47.0
2024-10-06
- 2.45.3 → 2.46.3 変更なし
- 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] [<object>…]
オプション
- <object>
-
到達不能トレースのヘッドとして扱うオブジェクト。
オブジェクトが指定されていない場合、git fsck はデフォルトで、インデックスファイル、
refs
名前空間内のすべての SHA-1 参照、およびすべての参照ログ (--no-reflogs が指定されていない限り) をヘッドとして使用します。 - --unreachable
-
存在するが、どの参照ノードからも到達できないオブジェクトを出力します。
- --[no-]dangling
-
存在するが、直接使用されていないオブジェクトを出力します (デフォルト)。
--no-dangling
を使用すると、この情報を出力から除外できます。 - --root
-
ルートノードを報告します。
- --tags
-
タグを報告します。
- --cache
-
インデックスに記録されているすべてのオブジェクトを、到達不能トレースのヘッドノードとしても考慮します。
- --no-reflogs
-
reflog のエントリによってのみ参照されるコミットを到達可能とみなしません。このオプションは、以前は参照にあったが現在はなく、しかし対応する 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 は、標準エラー出力ストリームがターミナルに接続されていない場合でも、強制的に進行状況を報告します。
設定
このセクションのこの行より下のすべては、git-config[1] ドキュメントから選択的に含まれています。内容はそちらにあるものと同じです。
- fsck.<msg-id>
-
fsck の実行中に、Git の現在のバージョンでは生成されない、または
transfer.fsckObjects
が設定されている場合にワイヤー経由で送信されないレガシーデータに関する問題が検出されることがあります。この機能は、そのようなデータを含むレガシーリポジトリでの作業をサポートすることを目的としています。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] のFsck Messages
セクションを参照してください。 - 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] を参照してください。
抽出された診断
- unreachable <type> <object>
-
<type> オブジェクト <object> は、実際にツリーまたはコミットのいずれにおいても直接的または間接的に参照されていません。これは、指定していない別のルートノードがあるか、ツリーが破損していることを意味する場合があります。ルートノードを見落としていないのであれば、到達不能なノードは使用できないため、削除しても構いません。
- missing <type> <object>
-
<type> オブジェクト <object> は参照されていますが、データベースには存在しません。
- dangling <type> <object>
-
<type> オブジェクト <object> はデータベースに存在しますが、直接使用されることはありません。ぶら下がりのコミットはルートノードである可能性があります。
- hash mismatch <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 が不正です。
-
badParentSha1
-
(ERROR) コミットオブジェクトの親の SHA1 が不正です。
-
badRefContent
-
(ERROR) ref の内容が不正です。
-
badRefFiletype
-
(ERROR) ref のファイルタイプが不正です。
-
badRefName
-
(ERROR) ref のフォーマットが無効です。
-
badReferentName
-
(ERROR) シンボリック参照の参照先名が無効です。
-
badTagName
-
(INFO) タグのフォーマットが無効です。
-
badTimezone
-
(ERROR) author/committer 行に無効なタイムゾーンが見つかりました。
-
badTree
-
(ERROR) ツリーを解析できません。
-
badTreeSha1
-
(ERROR) ツリーのフォーマットが無効です。
-
badType
-
(ERROR) 無効なオブジェクトタイプが見つかりました。
-
duplicateEntries
-
(ERROR) ツリーに重複するファイルエントリが含まれています。
-
emptyName
-
(WARN) パスに空の名前が含まれています。
-
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) 作者が欠落しています。
-
missingCommitter
-
(ERROR) コミッターが欠落しています。
-
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) コミットに複数の作者行が見つかりました。
-
nulInCommit
-
(WARN) コミットオブジェクトの本体に NUL バイトが見つかりました。
-
nulInHeader
-
(FATAL) オブジェクトヘッダーに NUL バイトが存在します。
-
nullSha1
-
(WARN) ツリーに null SHA1 を指すエントリが含まれています。
-
refMissingNewline
-
(INFO) 改行 (LF) で終わっていないルーズリファレンス。Git の有効な実装では、このようなルーズリファレンスファイルは作成されないため、将来的にはエラーになる可能性があります。このエラーが表示された場合は、どのようなツールがこのようなファイルを作成したかを知る必要があるため、git@vger.kernel.org メーリングリストに報告してください。
-
symlinkRef
-
(INFO) シンボリックリンクが symref として使用されています。このエラーが表示された場合は、どのようなツールがこのようなファイルを作成したかを知る必要があるため、git@vger.kernel.org メーリングリストに報告してください。
-
symrefTargetIsNotARef
-
(INFO) シンボリック参照のターゲットがルート参照も "refs/" で始まる参照も指していません。
git symbolic-ref
を使用して "ref" 外の参照を指す symref を作成することは許可されていますが、将来的にはこのルールを厳格化する可能性があります。このエラーが表示された場合は、どのようなツールがこのようなファイルを作成したかを知る必要があるため、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] スイートの一部