Gitプロジェクトの一部だけを複製できますか?

Gitプロジェクトの一部だけを複製できますか?

GitHubで必要なslackbuildsコレクションを見つけました。 https://github.com/PhantomX/slackbuilds/ 私はすべての子供を取得したくありません。

git clone https://github.com/PhantomX/slackbuilds.git

しかし、slackbuildだけを得ることができます。これ

どうすればいいですか?可能ですか?

ベストアンサー1

完全な履歴をダウンロードするので、大きな利点はありませんが、「レア」チェックアウトを使用して特定の部分をチェックアウトできます。引用するこのスタックオーバーフロー投稿:

疎化段階クローン以下に示すように:

mkdir <repo>
cd <repo>
git init
git remote add -f origin <url>

ここでやめましょう。他の文を引用したので引用された部分を編集したくないが、するいいえ-fと一緒に使用されますgit remote add。完全な履歴をインポートするインポートを実行します。以下を取得せずにリモコンを追加します。

git remote add origin <url>

その後、後述のように浅い取得を行います。

これにより、リモコンで空のストレージが作成され、すべてのオブジェクトがインポートされますが、チェックアウトすることはできません。次に、次のようにします。

git config core.sparseCheckout true

これで、実際にチェックアウトするファイル/フォルダを定義する必要があります。これは.git/info/sparse-checkout次のようにリストされています。

echo "some/dir/" >> .git/info/sparse-checkout
echo "another/sub/tree" >> .git/info/sparse-checkout

[...]

一度見てみたいかもしれません拡張チュートリアルおそらく公式を読む必要があります。スパースチェックアウトのドキュメント

おそらく、以下を使用する方が良いでしょう。浅いクローン。一般的な方法の代わりに、以下をgit pull試してください。

git pull --depth=1 origin master

私は最近これを再テストする機会がありました。Ubuntu Mono Powerlineフォント。上記の手順では約11MBをダウンロードし、そのうちUbuntuフォント自体は約900KBでした。

% git pull --depth=1 origin master
remote: Enumerating objects: 310, done.
remote: Counting objects: 100% (310/310), done.
remote: Compressing objects: 100% (236/236), done.
remote: Total 310 (delta 75), reused 260 (delta 71), pack-reused 0
Receiving objects: 100% (310/310), 10.40 MiB | 3.25 MiB/s, done.
Resolving deltas: 100% (75/75), done.
From https://github.com/powerline/fonts
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
% du -hxd1 .
11M     ./.git
824K    ./UbuntuMono
12M     .

通常、clone約20MBかかります。少しの節約がありますが、十分ではありません。

使用--filter+ Ciro Santilli 回答のお支払い方法サイズは小さくなりますが、前述のように各BLOBが1つずつダウンロードされるため、遅くなります。

% git fetch --depth=1 --filter=blob:none
remote: Enumerating objects: 52, done.
remote: Counting objects: 100% (52/52), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 52 (delta 1), reused 35 (delta 1), pack-reused 0
Receiving objects: 100% (52/52), 14.55 KiB | 1.32 MiB/s, done.
Resolving deltas: 100% (1/1), done.
From https://github.com/powerline/fonts
 * [new branch]      master     -> origin/master
 * [new branch]      terminus   -> origin/terminus
% git checkout origin/master -- UbuntuMono
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (1/1), 1.98 KiB | 1.98 MiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0), pack-reused 0
Receiving objects: 100% (1/1), 581 bytes | 581.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0), pack-reused 0
Receiving objects: 100% (1/1), 121.43 KiB | 609.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0), pack-reused 0
Receiving objects: 100% (1/1), 100.66 KiB | 512.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0), pack-reused 0
Receiving objects: 100% (1/1), 107.62 KiB | 583.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0), pack-reused 0
Receiving objects: 100% (1/1), 112.15 KiB | 791.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0), pack-reused 0
Receiving objects: 100% (1/1), 454 bytes | 454.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0), pack-reused 0
Receiving objects: 100% (1/1), 468 bytes | 468.00 KiB/s, done.
% du -hxd1 .
692K    ./.git
824K    ./UbuntuMono
1.5M    .

重要な要約:--filterダウンロード全体の数を減らすには、フル、レアチェックアウト、および浅いレプリケーションを使用してください。または、ダウンロードの総数に気を付けずに1つのディレクトリしか必要としない場合(どのようにして得られたら)、スパースチェックアウト+浅いレプリケーションを使用してください。

おすすめ記事