セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ
デバッグ
メール
外部システム
サーバー管理
-
2.47.0
10/06/24
- 2.46.0 → 2.46.2 変更なし
- 2.45.2 変更なし
-
2.45.1
04/29/24
- 2.45.0 変更なし
- 2.44.2 変更なし
-
2.44.1
04/19/24
- 2.44.0 変更なし
- 2.43.5 変更なし
-
2.43.4
04/19/24
- 2.43.1 → 2.43.3 変更なし
-
2.43.0
11/20/23
- 2.42.3 変更なし
-
2.42.2
04/19/24
- 2.42.0 → 2.42.1 変更なし
- 2.41.2 変更なし
-
2.41.1
04/19/24
- 2.41.0 変更なし
- 2.40.3 変更なし
-
2.40.2
04/19/24
- 2.40.0 → 2.40.1 変更なし
- 2.39.5 変更なし
-
2.39.4
04/19/24
- 2.39.3 変更なし
-
2.39.2
02/06/23
- 2.39.1 変更なし
-
2.39.0
12/12/22
- 2.38.1 → 2.38.5 変更なし
-
2.38.0
10/02/22
- 2.35.1 → 2.37.7 変更なし
-
2.35.0
01/24/22
- 2.30.2 → 2.34.8 変更なし
- 2.30.1 変更なし
- 2.22.2 → 2.30.0 変更なし
-
2.22.1
08/11/19
-
2.22.0
06/07/19
- 2.21.1 → 2.21.4 変更なし
-
2.21.0
02/24/19
- 2.19.1 → 2.20.5 変更なし
-
2.19.0
09/10/18
- 2.11.4 → 2.18.5 変更なし
-
2.10.5
09/22/17
-
2.9.5
07/30/17
- 2.7.6 → 2.8.6 変更なし
-
2.6.7
05/05/17
- 2.1.4 → 2.5.6 変更なし
-
2.0.5
12/17/14
概要
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 リファレンス、およびすべての 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 および代替オブジェクトプール内の対応する pack サブディレクトリにあるパックされた Git アーカイブ内にあるオブジェクトもチェックします。これは現在のデフォルトです。 --no-full で無効にできます。
- --connectivity-only
-
到達可能なオブジェクトの接続性のみをチェックし、到達可能なタグ、コミット、またはツリーによって参照されるオブジェクトが存在することを確認します。これにより、blob を完全に読み取らずに操作を高速化できます(ただし、参照された blob が存在するかどうかはチェックします)。これにより、コミットとツリーの破損を検出できますが、セマンティックチェック(例:形式エラー)は実行されません。blob オブジェクトの破損はまったく検出されません。
到達不能なタグ、コミット、ツリーにもアクセスして、ぶら下がっている履歴セグメントの先端を見つけます。この出力が不要で、さらに高速化したい場合は、
--no-dangling
を使用します。 - --strict
-
より厳格なチェックを有効にします。具体的には、古いバージョンの Git によって作成された、g+w ビットが設定されているファイルモードをキャッチします。Linux カーネル、Git 自体、スパースリポジトリを含む既存のリポジトリには、このチェックをトリガーする古いオブジェクトがありますが、新しいプロジェクトではこのフラグでチェックすることをお勧めします。
- --verbose
-
詳細な情報を表示します。
- --lost-found
-
ぶら下がっているオブジェクトを、タイプに応じて .git/lost-found/commit/ または .git/lost-found/other/ に書き込みます。オブジェクトが blob の場合、オブジェクト名ではなく、内容がファイルに書き込まれます。
- --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] で取得されますが、このようなデータの push を受け入れるには、代わりに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>
が設定されている場合、<msg-id>
が fsck メッセージ ID で、値がerror
、warn
、またはignore
のいずれかであるfsck.<msg-id>
設定を構成することで、エラーを警告に切り替えることができます。便宜上、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 メッセージ」セクションを参照してください。 - fsck.skipList
-
破損していることがわかっているが、非致命的で無視できるオブジェクト名(行ごとに 1 つの省略されていない SHA-1)のリストへのパス。Git 2.20 以降のバージョンでは、コメント(#)、空行、先頭と末尾の空白は無視されます。古いバージョンでは、行ごとの 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) 著者/コミッター行に無効な日付形式があります。
-
badDateOverflow
-
(ERROR) 著者/コミッター行に無効な日付値があります。
-
badEmail
-
(ERROR) 著者/コミッター行に無効なメール形式があります。
-
badFilemode
-
(INFO) ツリーに無効なファイルモードエントリが含まれています。
-
badName
-
(ERROR) 著者/コミッター名が空です。
-
badObjectSha1
-
(ERROR) オブジェクトに無効なsha1があります。
-
badParentSha1
-
(ERROR) コミットオブジェクトに無効な親sha1があります。
-
badRefFiletype
-
(ERROR) refに無効なファイルタイプがあります。
-
badRefName
-
(ERROR) refに無効な形式があります。
-
badTagName
-
(INFO) タグに無効な形式があります。
-
badTimezone
-
(ERROR) 著者/コミッター行に無効なタイムゾーンが見つかりました。
-
badTree
-
(ERROR) ツリーを解析できません。
-
badTreeSha1
-
(ERROR) ツリーに無効な形式があります。
-
badType
-
(ERROR) 無効なオブジェクトタイプが見つかりました。
-
duplicateEntries
-
(ERROR) ツリーに重複するファイルエントリが含まれています。
-
emptyName
-
(WARN) パスに空の名前が含まれています。
-
extraHeaderEntry
-
(IGNORE)
tagger
の後に余分なヘッダーが見つかりました。 -
fullPathname
-
(WARN) パスに"/"から始まるフルパスが含まれています。
-
gitattributesBlob
-
(ERROR)
.gitattributes
にblob以外のオブジェクトが見つかりました。 -
gitattributesLarge
-
(ERROR)
.gitattributes
blobが大きすぎます。 -
gitattributesLineLength
-
(ERROR)
.gitattributes
blobに長すぎる行が含まれています。 -
gitattributesMissing
-
(ERROR)
.gitattributes
blobを読み取れません。 -
gitattributesSymlink
-
(INFO)
.gitattributes
はシンボリックリンクです。 -
gitignoreSymlink
-
(INFO)
.gitignore
はシンボリックリンクです。 -
gitmodulesBlob
-
(ERROR)
.gitmodules
にblob以外のオブジェクトが見つかりました。 -
gitmodulesLarge
-
(ERROR)
.gitmodules
ファイルが大きすぎて解析できません。 -
gitmodulesMissing
-
(ERROR)
.gitmodules
blobを読み取れません。 -
gitmodulesName
-
(ERROR) サブモジュール名が不正です。
-
gitmodulesParse
-
(INFO)
.gitmodules
blobを解析できませんでした。
gitmodulesLarge
; (ERROR) .gitmodules
blobが大きすぎて解析できません。
-
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) 著者/コミッター行にメールアドレスがありません。
-
missingNameBeforeEmail
-
(ERROR) 著者/コミッター行で、メールアドレスの前に名前がありません。
-
missingObject
-
(ERROR) タグオブジェクトに
object
行がありません。 -
missingSpaceBeforeDate
-
(ERROR) 著者/コミッター行で、日付の前にスペースがありません。
-
missingSpaceBeforeEmail
-
(ERROR) 著者/コミッター行で、メールアドレスの前にスペースがありません。
-
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を指すエントリが含まれています。
-
treeNotSorted
-
(ERROR) ツリーが正しくソートされていません。
-
unknownType
-
(ERROR) 不明なオブジェクトタイプが見つかりました。
-
unterminatedHeader
-
(FATAL) オブジェクトヘッダーに改行がありません。
-
zeroPaddedDate
-
(ERROR) 著者/コミッター行にゼロ埋めされた日付が見つかりました。
-
zeroPaddedFilemode
-
(WARN) ツリーにゼロ埋めされたファイルモードが見つかりました。
GIT
git[1]スイートの一部です。