چگونه از گیت (Git) به طرز موثرتری استفاده کنیم؟ – به زبان ساده


گیت نرمافزار بسیار مفیدی است که به منظور کمک به فرایند توسعه پروژههای برنامهنویسی استفاده میشود. گیت هیچ الزام خاصی برای زبان برنامهنویسی یا ساختار فایل ندارد و همه چیز بر عهده برنامهنویس گذارده شده است تا گردش کاری خود را سازماندهی کند.
در این نوشته فرض شده که شما سیستم کنترل نسخه گیت را روی سیستم خود نصب کردهاید و تنظیمات پیکربندی عمومی (مانند نام کاربری و ایمیل) را نیز به طرز صحیحی تنظیم کردهاید. اگر چنین نیست، میتوانید از مقاله «نصب گیت (Git) روی اوبونتو» کمک بگیرید.
پیش از استفاده از گیت برای توسعه کد، بهتر است گردش کار خود را طرحریزی کنید. تصمیمگیری در مورد گردش کار معمولاً مبتنی بر اندازه و مقیاس پروژه صورت میگیرد. برای این که درکی اولیه از گیت داشته باشید، طراحی یک گردش کاری ساده و تک انشعابی (single branch) کافی خواهد بود. به طور پیشفرض نخستین شاخه از هر پروژه گیت به نام «مستر» (master) نامیده میشود. در این راهنما با روش ساخت شاخههای دیگر نیز آشنا میشویم.
در ادامه نخستین پروژه خود را به نام «testing» میسازیم. اگر از قبل پروژهای دارید که میخواهید به گیت ایمپورت کنید، میتوانید به بخش «تبدیل پروژه به محیط فضای کار» مراجعه کنید.
ایجاد فضای کار (workspace)
همان طور که هر کس دوست دارد محیط کاری تمیز و مناسبی داشته باشد، این مسئله در مورد محل کدنویسی نیز به خصوص در حالتی که همزمان روی چند پروژه کار شود، صدق میکند. پیشنهاد خوب در این زمینه آن است که پوشهای به نام git روی دایرکتوری home سیستم خود داشته باشید که زیرپوشههای آن هر یک به یک پروژه مستقل اختصاص داشته باشند.
نخستین کاری که باید برای ایجاد محیط کاری خود انجام دهید، به صورت زیر است:
user@host ~ $ mkdir -p ~/git/testing; cd ~/git/testing
دستور فوق دو کار انجام میدهد:
- یک دایرکتوری به نام git در دایرکتوری home ایجاد میکند و سپس یک زیردایرکتوری به نام testing داخل آن ایجاد میکند. در واقع پروژه ما درون این زیردایرکتوری ذخیره خواهد شد.
- ما را به این زیردایرکتوری میبرد.
زمانی که وارد این دایرکتوری شدیم، باید چند فایل ایجاد کنیم که پروژه ما را تشکیل خواهند داد. در این مرحله هم میتوانید چند فایل ساختگی به منظور تست ایجاد کنید و یا این که فایلها/دایرکتوریهایی که میخواهید واقعاً بخشی از پروژه شما باشند را ایجاد کنید.
ما با استفاده از دستور زیر یک فایل تست ایجاد میکنیم که در ریپازیتوری که ایجاد میکنیم، استفاده خواهد شد:
user@host ~/git/testing $ touch file
زمانی که فایلهای پروژه در فضای کاری آماده شدند، باید شروع به ردگیری فایلها با گیت بکنیم. در مرحله بعدی این فرایند توصیف خواهد شد.
تبدیل یک پروژه موجود به محیط فضای کاری
زمانی که همه فایلها در محیط کاری گیت آماده شدند، باید به گیت بگوییم که میخواهیم از دایرکتوری جاری به عنوان محیط گیت استفاده کنیم:
user@host ~/git/testing $ git init Initialized empty Git repository in /home/user/git/testing/.git/
زمانی که ریپازیتوری خالی اولیه خود را راهاندازی کردیم، میتوانیم فایلها را به آن اضافه کنیم. در ادامه همه فایلها و دایرکتوریها را به ریپازیتوری جدیداً ایجاد شده اضافه میکنیم:
user@host ~/git/testing $ git add.
در این حالت بنا به مصداق ضربالمثل «بیخبری، خوشخبری است»، اگر هیچ خروجی دیده نشود، یعنی همه چیز به درستی پیش رفته است. متأسفانه گیت در همه موارد در صورت بروز اشکال، اطلاعرسانی نمیکند.
هر زمان که مواردی را به فایلها اضافه کنید یا تغییری ایجاد کنید، باید یک پیام کامیت (commit) بنویسید. در بخش بعدی توضیح میدهیم که پیام کامیت چیست و چگونه میتوان آن را نوشت.
ایجاد یک پیام کامیت
پیام کامیت، پیام کوتاهی است که تغییراتی که صورت گرفته است را توضیح میدهد. این پیام برای ارسال تغییرات کد به ریپازیتوری که پوش (push) نامیده میشود ضروری است و روش مناسبی برای ارتباط با همکاران توسعهدهنده محسوب میشود که میخواهند تغییرات را مشاهده کنند. در این بخش روش ایجاد کامیت را توضیح میدهیم.
پیامهای کامیت به طور کلی کوتاه هستند و در یک یا دو جمله تغییراتی که ایجاد شدهاند را توضیح میدهند. توضیح همه تغییراتی که صورت گرفته است، پیش از ارسال هر پوش رویه مناسبی است. شما میتوانید به هر تعداد که دوست دارید پوش کنید. تنها الزام برای هر کامیت این است که باید دست کم یک فایل وجود داشته باشند و همچنین پیامی برای آن تنظیم شود. هر Push باید دست کم یک کامیت داشته باشد.
اگر مثال خود را پیگیری کنیم میتوانیم پیام نخستین کامیت خود را به صورت زیر تنظیم کنیم:
user@host ~/git/testing $ git commit -m "Initial Commit" -a [master (root-commit) 1b830f8] initial commit 0 files changed create mode 100644 file
دو پارامتر مهم در دستور فوق وجود دارد. نخست پارامتر m- است که مشخص میسازد پیام کامیت ما در ادامه آمده است. پارامتر دوم a- است که تعیین میکنید میخواهیم پیام کامیت ما در مورد همه فایلهای اضافه شده یا تغییر یافته اعمال شود. این وضعیت برای نخستین کامیت مشکلی ندارد؛ اما به طور کلی باید فایلها یا دایرکتوریهای منفردی که میخواهیم کامیت کنیم را تعیین نماییم. همچنین میتوانیم دستور زیر را برای تعیین فایل خاصی که کامیت میکنیم، به کار بگیریم:
user@host ~/git/testing $ git commit -m "Initial Commit" file
برای افزودن فایلها یا دایرکتوریهای دیگر باید یک فهرست جداشده با کاراکتر اسپیس به انتهای دستور فوق اضافه کنید.
پوش کردن تغییرات به سرور ریموت
ما تا این مرحله از این راهنما، همه کارهای خود را روی سرور محلی انجام دادهایم. با این که استفاده محلی از گیت، مواردی که میخواهید روش آسانی برای کنترل نسخه فایلهایتان داشته باشید، گزینه ایدهآلی محسوب میشود؛ اما اگر میخواهید با تیمی از توسعهدهندگان کار کنید باید تغییرات را به یک سرور ریموت پوش کنید. در ادامه روش این کار را توضیح میدهیم.
در مرحله نخست باید بتوانیم کد خود را از طریق یک URL که مربوط به ریپازیتوری است به آن پوش کنیم و یک نام نیز برای آن تعیین کنیم. برای پیکربندی ریپازیتوری ریموت جهت استفاده و دیدن همه سرورهای ریموت (شما میتوانید چند سرور ریموت داشته باشید) باید دستور زیر را وارد کنید:
user@host ~/git/testing $ git remote add origin ssh://git@git.domain.tld/repository.git user@host ~/git/testing $ git remote -v origin ssh://git@git.domain.tld/repository.git (fetch) origin ssh://git@git.domain.tld/repository.git (push)
دستور نخست یک سرور ریموت به نام «origin» اضافه میکند و URL را به صورت ssh://git@git.domain.tld/repository.git تنظیم میکند.
شما میتوانید نام ریموت را هر چیزی که دوست دارید بگذارید؛ اما URL باید به یک ریپازیتوری ریموت واقعی اشاره کند. برای نمونه اگر بخواهید کد خود را به گیتهاب پوش کنید، باید از ریپازیتوری دارای URL ارائه شده از سوی گیتهاب استفاده کنید. زمانی که ریموت پیکربندی شد میتوانید کد خود را پوش کنید.
با دستور زیر میتوان کد را به سرور ریموت پوش کرد:
user@host ~/git/testing $ git push origin master Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 266 bytes, done. Total 3 (delta 1), reused 1 (delta 0) To ssh://git@git.domain.tld/repository.git 0e78fdf..e6a8ddc master -> master
دستور git push به گیت میگوید که میخواهید تغییرات را پوش کنید. در دستور فوق «origin» نام سرور ریموت اخیراً پیکربندیشده ما است و «master» نیز نام نخستین شاخه یا branch ما محسوب میشود. در آینده هر کامیتی را که بخواهید به سرور پوش کنید، میتوانید به سادگی از دستور git push استفاده کنید.
امیدواریم این مقاله درکی مقدماتی از طرز کار گیت به شما ارائه کرده باشد و بتوانید از آن به طرز مؤثری برای کار با همکارانتان استفاده کنید. در بخش بعدی این سری از مقالات، تحلیل عمیقتری از برنچهای گیت و دلیل کارآمدی آنها خواهیم داشت.
اگر این مطلب برایتان مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی
- آموزش گیت (Git) برای مدیریت نسخه توزیع شده
- مجموعه آموزشهای علوم کامپیوتر
- ۷ مورد از بهترین جایگزینهای گیتهاب برای میزبانی پروژههای متن-باز
- آموزش تاریخچه گیت (Git) و مقدمات آن
- Caddy و راه اندازی سریع وب سایت استاتیک و خودکار مبتنی بر Git — به زبان ساده
==