kledgeb Ubuntuの使い方や日本語化、アプリの使い方を紹介しています。

ハードリンクによる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ノード番号が異なっています。
    従ってハードリンクではないコピーされたファイルということになります。


関連コンテンツ
同一カテゴリーの記事
コメント
オプション