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
機能を使用します。
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn