HOWTO · Git

Git で特定のフォルダーをプルする

リモート Git リポジトリからプルするフォルダーを指定できます。

この記事では、リモート Git リポジトリから特定のフォルダーをプルする方法を説明します。 このアプローチは、大きなリポジトリからいくつかのファイルを操作したい場合に便利です。

2GB サイズのリポジトリから 1つのフォルダーをダウンロードする時間を大幅に節約できます。 さっそく始めましょう。

Git で特定のフォルダーをプルする

特定のフォルダーを取得するために使用できる最も簡単な方法は、Git の Sparse Checkout 機能を使用することです。 概念を説明することはできますが、このシナリオには例が適切です。

以下の例では、GitHub でホストされているリモート リポジトリがあり、多数のファイルがディレクトリに配置されています。 apps フォルダーをプルして作業します。

リモート リポジトリ

以下の手順に従って、apps フォルダーをプルします。

Git Bash で、apps フォルダーを格納するディレクトリを作成します。

$ mkdir Djangp-datta-able

cd コマンドを使用してディレクトリに移動し、Git リポジトリを初期化します。

$ git init

これがローカルリポジトリの現在の内容です。

$ ls -la
total 4
drwxr-xr-x 1 pc pc 0 Aug 31 09:45 ./
drwxr-xr-x 1 pc pc 0 Aug 31 09:44 ../
drwxr-xr-x 1 pc pc 0 Aug 31 09:45 .git/

次に、プルしたいリモート リポジトリをローカル リポジトリに追加します。 実行します:

$ git remote add origin https://github.com/app-generator/django-datta-able.git

それが完了したら、リポジトリで sparse checkout プロパティを有効にすることができます。 以下に示すように、git config コマンドを使用します。

$ git config core.sparsecheckout true

次に示すように、apps フォルダーを sparse checkout プロパティに追加できます。

$ echo 'apps' >> .git/info/sparse-checkout

apps をプル元のディレクトリに置き換えることができます。 sparse checkout 機能に複数のディレクトリを追加することもできます。

残っているのは、リモート リポジトリからプルすることです。 実行します:

$ git pull origin master

上記のコマンドは apps フォルダーを取得し、それをローカル ディレクトリに複製します。 ローカル リポジトリの内容を確認してみましょう。

$ ls -la
total 8
drwxr-xr-x 1 pc pc 0 Aug 31 09:49 ./
drwxr-xr-x 1 pc pc 0 Aug 31 09:44 ../
drwxr-xr-x 1 pc pc 0 Aug 31 09:50 .git/
drwxr-xr-x 1 pc pc 0 Aug 31 09:49 apps/

ローカル リポジトリに apps/ フォルダーがあることがわかります。 ディレクトリを確認すると、次のことがわかります。

ディレクトリ内のアプリ フォルダー

そこにあります。 リモート リポジトリから 1つのフォルダーを正常にプルしました。

コードを変更してコミットし、リモート リポジトリにプッシュすることができます。

サインオフする前に、使用できる別の方法があります。これについては後ほど説明します。 ただし、これから説明する方法では、コードを変更してリモートにプッシュすることはできません。

リモート リポジトリをローカル リポジトリに追加した後、git fetch コマンドを実行し、以下に示すように目的のフォルダーをチェックアウトします。

$ git checkout HEAD path/to/your/dir/or/file

上記の方法は Stack Overflow から入手しましたが、リモート リポジトリから特定のフォルダーをプルできることのみを示しています。 変更、コミット、およびリモートへのプッシュバックを行う場合は、sparse checkout 機能を使用します。