نحوه استفاده از زیر ماژول های Git – با مثال توضیح داده شده است
Git بدون شک یک ابزار بسیار مهم برای توسعه دهندگان است، زیرا به ما کمک می کند تا به طور یکپارچه با هم همکاری کنیم، تغییرات را به طور موثر پیگیری کنیم و یکپارچگی پروژه را در محیط های توزیع شده حفظ کنیم.
با این حال، با افزایش پیچیدگی و دامنه پروژه ها، وابستگی آنها نیز افزایش می یابد. به همین دلیل، نیاز به مکانیزمی برای مدیریت صحیح این وابستگی ها در حین رشد وجود دارد. این مکانیسم به عنوان زیر ماژول های Git شناخته می شود.
در این مقاله، ما به دنیای زیر ماژولهای Git میپردازیم تا درک بهتری از نحوه عملکرد آنها داشته باشیم.
پیش نیازها
درک اولیه Git و GitHub.
Git نصب شده است.
ساب ماژول های Git چیست؟
یک زیر ماژول Git به یک مخزن Git اشاره دارد که در یک مخزن Git دیگر وجود دارد.
می توانید آن را به عنوان یک مخزن فرزند یا زیر مجموعه ای از یک مخزن اصلی در نظر بگیرید.
زیرماژولهای Git روشی ساختاریافته برای گنجاندن مخازن خارجی در یک پروژه ارائه میکنند و در عین حال مزایای نگهداری جداگانه یک مخزن را حفظ میکنند.
تفاوت بین Repository و Submodule
یک زیر ماژول نیز یک مخزن است. تنها تفاوت بین یک زیر ماژول و یک مخزن این واقعیت است که یک زیر ماژول فقط می تواند به عنوان یک مخزن Git در یک مخزن دیگر وجود داشته باشد. اگر یک زیر ماژول در خارج از یک مخزن وجود داشته باشد، دیگر نمی توان آن را زیر ماژول نامید. فقط می توان به آن به عنوان یک مخزن اشاره کرد.
همه زیر ماژول ها مخزن هستند اما همه مخازن زیر ماژول نیستند.
چگونه یک زیر ماژول Git اضافه کنیم
برای اضافه کردن یک زیرماژول Git، ابتدا مطمئن شوید که در یک مخزن Git هستید و URL مخزن راه دوری را که میخواهید به عنوان یک زیر ماژول اضافه کنید، دارید.
بیشتر بخوانید
سپس، از دستور git submodule add
و سپس URL مخزنی که می خواهید اضافه کنید استفاده کنید.
git submodule add <submodule_url>
دستور بالا به طور پیش فرض زیر ماژول را در سطح ریشه مخزن اصلی شما اضافه می کند.
برای تعیین دایرکتوری که می خواهید زیر ماژول در مخزن اصلی شما قرار گیرد، آرگومان path را به دستور اضافه کنید.
git submodule add <submodule_url> <path>
جایی که:
<submodule_url>
URL مخزن Git است که میخواهید به عنوان زیر ماژول اضافه کنید.
<path>
مسیری است که میخواهید زیر ماژول در مخزن شما اضافه شود.
فایل gitmodules
پس از ایجاد یک زیر ماژول git جدید با دستور git submodule add
، یک فایل جدید به سطح ریشه مخزن اصلی شما اضافه می شود. آن فایل فایل .gitmodules است.
.gitmodules یک فایل پیکربندی است که توسط Git برای ذخیره اطلاعات مربوط به زیر ماژول های موجود در یک مخزن استفاده می شود. این شامل جزئیات مربوط به هر زیر ماژول، مانند URL ها و مسیرهای آنها است.
این فایل کمک می کند تا اطمینان حاصل شود که وقتی یک مخزن را با زیر ماژول ها کلون یا به روز می کنید، Git می داند که محتویات زیر ماژول را از کجا واکشی کند و از چه نسخه هایی از زیر ماژول ها استفاده کند.
در اینجا مثالی از شکل ظاهری فایل .gitmodules آورده شده است:
[submodule "example"] path = example url = https://github.com/example/example.git
اگر بیش از یک زیر ماژول در پروژه خود دارید، فایل gitmodules شما به این صورت خواهد بود:
[submodule "submodule1"] path = submodule1 url = https://github.com/example/submodule1.git [submodule "submodule2"] path = submodule2 url = https://github.com/example/submodule2.git [submodule "submodule3"] path = submodule3 url = https://github.com/example/submodule3.git
چگونه یک زیر ماژول اضافه نکنیم
گاهی اوقات ممکن است وسوسه شوید که از دستور git clone
برای اضافه کردن یک مخزن به عنوان یک وابستگی در مخزن خود استفاده کنید. شما باید در مقابل آن وسوسه مقاومت کنید!
اگر از دستور git clone
استفاده می کنید، پیام زیر را در ترمینال Git Bash دریافت خواهید کرد: "شما یک مخزن git دیگر را در مخزن فعلی خود اضافه کرده اید. کلون های مخزن خارجی حاوی محتویات مخزن تعبیه شده نیستند و نخواهند بود. بدانید چگونه آن را بدست آورید..."
این پیام را در حالی دریافت کردم که سعی می کردم با استفاده از دستور git clone
یک زیر ماژول به دایرکتوری theme/anake
اضافه کنم.
به طور عمده دو دلیل وجود دارد که چرا نباید از این دستور استفاده کنید:
هنگامی که کد خود را به مخزن راه دور خود فشار دهید، دایرکتوری زیرماژول خالی خواهد بود.
کلون های مخزن خارجی (مخزن اصلی) حاوی محتویات مخزن تعبیه شده (زیر ماژول) نیستند و نمی دانند که چگونه آن را بدست آورند، همانطور که توسط Git در پیام بالا بیان شده است.
و دلایل فوق مسائلی هستند که ناشی از نداشتن فایل .gitmodules (که هنگام استفاده از دستور git submodule add
به طور خودکار اضافه می شود) در سطح ریشه مخزن اصلی شما هستند.
گفت ن دستی فایل .gitmodules در سطح ریشه مخزن اصلی، مشکلات فوق را برطرف می کند. با این حال، ایجاد یک زیر ماژول با استفاده از دستور git submodule add
از آنها جلوگیری می کند.
چگونه یک مخزن را با یک زیر ماژول Git کلون کنیم
دو دستور وجود دارد که باید هر زمان که می خواهید مخازن با زیر ماژول ها را کلون کنید آنها را به خاطر بسپارید. آن دستورات عبارتند از:
git submodule init
: این دستور زیر ماژول های تعریف شده در مخزن را مقداردهی اولیه می کند. هنگامی که یک مخزن حاوی زیر ماژول ها را کلون می کنید، Git به طور خودکار محتویات زیر ماژول را واکشی نمی کند. شما باید git submodule init
را اجرا کنید تا ابتدا آنها را مقداردهی کنید.
Git فایل .gitmodules را در مخزن می خواند تا زیر ماژول ها را پیکربندی کند و زمانی که git submodule update
اجرا می کنید برای واکشی محتویات زیر ماژول آماده می شود.
git submodule update
: این دستور آخرین commit ها را از مخازن زیر ماژول واکشی می کند.
اگر commit های جدیدی در مخازن زیر ماژول وجود دارد، ممکن است لازم باشد git submodule update
برای به روز رسانی زیر ماژول ها به آخرین وضعیت اجرا کنید.
برای شبیه سازی مخازن دارای زیر ماژول ها، اولین کاری که باید انجام دهید این است که دستور git clone
برای آن مخزن اجرا کنید.
git clone <repository_URL>
پس از آن، دستور git submodule init
را در سطح ریشه مخزن اصلی اجرا کنید.
git submodule init
سپس در نهایت دستور git submodule update
اجرا کنید.
git submodule update
نتیجه
زیر ماژول های Git به عنوان مکانیزمی برای مدیریت موثر وابستگی ها در یک پروژه عمل می کنند. آنها امکان ادغام یکپارچه مخازن خارجی را در یک پروژه اصلی، حفظ مرزهای واضح بین اجزا و در عین حال تسهیل همکاری فراهم می کنند.
با استفاده از زیر ماژولها، توسعهدهندگان میتوانند جریان کار را سادهسازی کنند، یکپارچگی پروژه را حفظ کنند و همکاری کارآمد را تسهیل کنند، و در نهایت به فرآیندهای توسعه قویتر و مقیاسپذیر کمک کنند.
ارسال نظر