はい:あなたがGitの中でほとんど何もを行うたび、あなたは本当に、リポジトリへの新しいオブジェクト(コミットやファイルなど)を追加する場所で、既存のオブジェクトを残しています。主な例外はgit gc
ですが、有効期限が切れるまで既存のオブジェクトだけを残します。
正確な有効期限は少し複雑です。すべてのオブジェクトは、通常、彼らは(つまり、オブジェクトがどこにも記録されていない時にも、数秒から数分を、かかる場合があります)遅い操作中に削除されないだけように、少なくとも2週間のために生きます。参照-な枝にコミット、または-normallyもあたり、ブランチREFLOG(HEAD
ための個別のログがあります)に書き込まれますHEAD
に記録されているように書き込ま
その向こう
、オブジェクトID(主にIDをコミット)。これらは書かれた時点でタイムスタンプが付けられており、このようなエントリはデフォルトでは30日間または90日間存続します。長く生きるものは、参照の先端から到達なものである:つまり、HEAD
ため、HEAD
の歴史に残っていることコミットし、枝のために、枝の上に残っていることにコミットします。寿命が短く、有効期限が30日であるコミットは、ブランチ上になくなった(リベースされた、および/または押し潰された)コミットです。
これらのreflogエントリは、Grim Reaperコレクタからオブジェクトを保護します。つまり、これは、古いコミットが、すべてが取得する14日間だけでなく、30日間にわたって行われることを意味します。参照を削除
は、例えば、git branch -D branch
は、そのREFLOGが同様に除去されるようにします。したがって、reflogエントリが削除されたブランチにのみ存在する場合、猶予期間はオブジェクトの作成から14日間に縮小される可能性があります。
リベースされたコミットは、何か(通常は別のリベース)がORIG_HEAD
を上書きするまで、特殊名ORIG_HEAD
によっても参照されます。これは、30日のデフォルトを過ぎてもコミットを保護することができます。
実際にはgit gc
までは、オブジェクトを実行して削除しますが、それは固執します。一般的にクローンにコピーされることはありませんが、git gc
を実行する必要がなければ、何年も前からリポジトリにアクセスしてアクセス可能です。
基本的に、はい。 :-) – melpomene