ROUTES

گرفتن زیرشاخه‌های خاص از یک مخزن Git

{m:info}(نوشته از Jason Karns در Code Nomad)

ممکنه یک زمانی بخواهید از یک مخزن Git فقط یک قسمت/پوشه خاص رو دریافت کنین و آپدیت نگه‌اش دارین. برای اینکار باید از امکان spare-checkout گیت استفاده کنید.

مخزن جدید

برای اینکه بشه از این امکان استفاده کرد، باید تو تنظیمات مخزن گیت core.sparecheckout مقدار true تظیم بشه. برای اینکار هم لازمه‌اش اینه که مخزن از قبل وجود داشته باشه. پس به جای اینکه git clone کرد، باید git init انجام داد.

مخزن جدید رو بسازید:

mkdir <repo> && cd <repo>
git init
git remote add –f <name> <url>

امکان spare-checkout رو فعال کنید:

git config core.sparsecheckout true

زیر شاخه‌هایی که میخواین رو در .git/info/spare-checkout اضافه کنید:

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

حالا مخزن رو از سرور pull کنید:

git pull <remote> <branch>

مخزن موجود

اگر از قبل یک مخزن دارید و میخواید spare-checkout استفاده کنید، مثل مورد بالا spare-checkout رو فعال کنین و بعد هم git read-tree رو انجام بدین:

git config core.sparsecheckout true

اضافه کردن شاخه‌های مورد نیاز به .git/info/spare-checkout :

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

مخزن رو آپدیت کنین:

git read-tree -mu HEAD

تغییر زیرشاخه‌های انتخاب شده

اگر بعداً تصمیم گرفتین که زیرشاخه‌هایی که انتخاب کردین رو تغییر بدین، خیلی راحت پرونده spare-checkout رو تغییر بدین و بعد هم git read-tree رو دوباره اجرا کنین.

مستندات مربوط به sub-tree/spare-checkout رو بخونید. پرونده spare-tree از الگوها هم پشتیبانی می‌کنه، دقیقا مثل gitignore. از لیست سیاه هم پشتیبانی میشه - میتونید انتخاب کنید که چه شاخه‌ها یا پرونده‌های checkout نشن.