ハードリンクによるGitオブジェクトのコピーを禁止し、リモートリポジトリーをクローンする
ハードリンクによる「Gitオブジェクト」のコピーを禁止し、「リモートリポジトリー」をクローンします。通常のファイルのコピー方法で、コピーを行います。
Gitオブジェクトのハードリンク
「ローカルプロトコル(ファイルパス)」を使用して「リモートリポジトリー」をクーロンする際、不変的なファイルである「Gitオブジェクト」は、ハードリンクで作成しようとします。ハードリンクはファイルシステムを超えられませんし、ハードリンクが利用できる状況は限られますが、ファイルのハードリンクを作成することで、「ローカルリポジトリー」が使用するHDDの使用量を大幅に削減できます。
ハードリンクでは都合が悪い場合
例えば、「リモートリポジトリー」をクローンしてバックアップを作成する際、バックアップツールによっては、ハードリンクされたファイルをうまく扱えません。そのような時はハードリンクの作成を禁止して、「リモートリポジトリー」をクローンすると良いでしょう。
オプションの説明
ハードリンクによるコピーを禁止するには、以下のオプションを指定します。オプション |
---|
--no-hardlinks |
コマンドの実行例
コマンドの実行例です。1.ローカルリポジトリーの配置場所とリモートリポジトリー
ここでは例として、「~/ドキュメント/git」フォルダー内に「myCloneProject」フォルダーを作成してもらい、「myCloneProject」フォルダー内にリポジトリーをクローンします。クローン元の「リモートリポジトリー」は、「~/ドキュメント/git/mySharedProject」です。
2.カレントディレクトリーの移動
「端末」を起動し、カレントディレクトリーを「~/ドキュメント/git」に移動します。3.コマンドの実行
「リモートリポジトリー」をクローンします。コマンドの説明は、「リモートリポジトリーをクローンするコマンドの説明」を参考にしてください。
ここでは、以下のコマンドを実行します。
ポイントは、赤字の箇所です。
git clone --no-hardlinks mySharedProject myCloneProject
4.コマンドの実行結果
以下のように、「リモートリポジトリー」がクローンされます。5.フォルダーの確認
「Nautilus」を起動し「~/ドキュメント/git」フォルダーを見ると、以下のように「myCloneProject」フォルダーが作成されています。6.myCloneProjectフォルダーの確認
「myCloneProject」フォルダーを開くと、クローンされたリポジトリーが配置されています。「.git」フォルダーが、「Gitディレクトリー」です。
「myCloneProject」フォルダーが、「ワーキングディレクトリー」です。
「test.txt」はチェックアウトされたプロジェクトのファイルです。
ファイルの確認
「リモートリポジトリー」のファイルのハードリンクになっていないか、確認します。1.リモートリポジトリーのファイル
以下は、「リモートリポジトリー」にある「Gitオブジェクト」のファイルです。2.ローカルリポジトリーのファイル
以下は、「ローカルリポジトリー」にある「Gitオブジェクト」ファイルです。「リモートリポジトリー」のコピーなので、中身は同じです。
3.ファイルの情報
上記2つのファイルの情報を表示すると、以下のようになります。以下は、「リモートリポジトリー」にあるファイルの情報です。
以下は、「ローカルリポジトリー」にあるファイルの情報です。
一番左に表示されるiノードの番号を比較すると、いずれのファイルもiノード番号が異なっています。
従ってハードリンクではないコピーされたファイルということになります。