وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

برنامه نویسی برای مبتدیان – گیت

گیت / Git چیست و چطور با آن کار کنیم

0 85
زمان لازم برای مطالعه: 7 دقیقه
لطفا فراموش نکنید به مطلب امتیاز بدهید

اگر شما یک برنامه نویس باشید، یک پروژه ممکن است به چند روش توسعه داده شود ، دو مورد از متداول ترین روشها :

  1. مسئولیت تمام پروژه را به تنهایی بر عهده گرفته و از 0 تا 100 پروژه را خودتان انجام می‎دهید
  2. عضو یک تیم توسعه نرم افزار باشید و شما فقط قسمتی از آن پروژه را انجام می‎دهید

اگر تاکنون تجربه کار روی پروژه های بزرگ و بصورت تیمی را داشته باشید و یا حتی به تنهای روی پروژه ای که از چند ده یا صد هزارخط کد تشکیل شده است را داشته باشید  حتما می‎دانید که چقدر هماهنگی کدهای نهایی اعضای تیم برای تولید آخرین نسخه برنامه و یا بررسی نسخه ها در مراحل توسعه پروژه کار دشواری است.زیرا که در بسیار از موقعیت ها دو برنامه نویس بصورت همزمان محتوای یک فایل را ویرایش میکنند و ادغام تغییرات هر دو نفر در نهایت کار،دشوار و زمان گیری است. و از طرفی هم مدیریت نسخه های مختلف برای یک نفر نیز می‎تواند به معظل بزرگی تبدیل شود

جامعه برنامه نویسان برای شما استفاده از یک نرم افزار کنترل نسخه را تجویز کرده اند!

البته مثالی که در بالا زده شد فقط یکی از حالت های کارایی برنامه های کنترل نسخه است ولی اصلی ترین وظیفه ی آن هاست که همه چیز را یادشان بماند و درصورت وجود مشکل یا تداخلی سریعا بتوان با آن ها مشکل را تشخیص داد.

گیت چیست؟

گیت (یا Git) یک نرم افزار کنترل نسخه است.این نرم افزار رایگان است و توسط همان کسی که لینوکس را ساخت!

گیت بر روی لینوکس، ویندوز و مکینتاش نصب می‎شود و می‎تواند همه زبان های برنامه نویسی را ردیابی کند. گیت بصورت پیشفرض دارای رابط گرافیکی نیست و عموما از طریق خط فرمان کنترل میشود اما برنامه هایی موجود هستند که با نصب آن ها میتوانید عملیات اصلی Git را بواسطه رابط گرافیکی انجام بدهید. لیست آن ها را در پست دیگری برای شما قرار می‎دهیم تا مشاهده کنید .

اولین کاربران گیت توسعه دهندگان هسته لینوکس بودند ولی امروزه گوگل، فیسبوک، ماکروسافت، توییتر و لینکدین از کاربران سرشناس این برنامه محسوب میشوند که جمعا هزاران پروژه نرم افزاری موفق و ناموفق را رقم زدند.

منطق گیت چیست ؟

در منطقِ گیت یک برنامه نویس (فرضا دیوید ) می‎بایست شروع کننده پروژه باشد. دیوید چند روز کد می‎نویسد و موفق می‎شود تا برنامه اش را به مرحله نسخه اولیه و اجرایی برساند سپس او در پوشه اصلی پروژه اش با استفاده از گیت یک مخزن یا Repository جدید ایجاد میکند و تمام فایل های پروژه اش را در آن اضافه (Add) و محتوای تمام آن فایل ها را تحت عنوان یک نام ثبت یا Commit می‎کند. حالا دیوید یک کپی از این پوشه پروژه را به شما و همکارتان میدهد و میگوید که بر روی بخش های خاصی از پروژه کار کنید و خودش هم بر روی قسمت دیگری فعالیت می‎کند.

دیوید ، شما و همکارتان بعد از چند روز یکدیگر ملاقات می‎کنید و قصد دارید تا هر سه قسمت مختلف که توسط شما سه نفر بصورت جداگانه پیاده سازی شده را با هم ادغام کنید و نهایتا یک برنامه کامل تشکیل بدهید. دیوید به عنوان مدیر پروژه، دو پوشه پروژه ی شما دونفر را دریافت میکند و آن را بر روی رایانه خودش کپی میگیرد و با استفاده از گیت دو مخزن دیگر را در مخزن خودش ادغام (Merge) میکند و در آن زمان پوشه ای که در سیستم دیوید قرار گرفته ترکیبی از فعالیت چند روزه هر سه نفر شماست.

کاری که گیت انجام میدهد ساده است، از برنامه‎نویس می‎خواهد تا در هر مرحله از برنامه نویسی خود (مثلا بعد از پیاده سازی یک قابلیت خاص در  پروژه) فایل هایی که تغییر داده را معرفی و کل آن تغییرات را تحت یک عنوان مشترک ذخیره کند.

پیشنهاد می‎کنیم بخوانید:
Semantic Versioning:نسخه‎دهی مفهومی چیست و چرا به آن نیاز دارید ؟

حالا زمانی که می‏‎خواهید مخزن خودتان را با مخزن همکارتان ادغام کند گیت خط به خطِ هر فایل از هر دو مخزن را با هم مقایسه میکند و با توجه به زمان تغییرات آن خطوطی که پاک شده اند را پاک میکند و خطوطی که اضافه یا ویرایش شده اند را نیز تغییر میدهد.

البته در گیت این قابلیت کلیدی وجود دارد که به جای این که مخازن از طریق روش سنتی کپی-پیست بین اعضای تیم منتقل شود، از یک سرور مرکزی استفاده شود.با این روش یک مخزن اصلی بر روی سروری که در دسترس همه اعضای تیم است قرار میگیرد و همه اعضا آخرین ورژن برنامه را از آن دریافت و تغییرات خود را بعد از ثبت در آن ذخیره میکنند تا بصورت فوری در اختیار بقیه اعضای تیم هم قرار بگیرد.

شیوه کار git

با توجه به این توضیحات چند قابلیت کلی در سیستم گیت به چشم میخورد:

  • هر کس که در پروژه تغییر ایجاد میکند دارای هویت است.
  • هر تغییر در فایل ها باید در سیستم با یک عنوان، زمان و یک هویت ذخیره شود.
  • فایل ها از در هم کنار قرار گرفتن تغییرات ایجاد میشوند.
  • شما میتوانید با باز کردن تاریخچه یک پروژه دقیقا متوجه بشوید که چه کسی در چه زمانی چه تغییراتی ایجاد کرده است.
  • شما میتوانید با مراجعه به تاریخچه یک فایل دقیقا متوجه شوید که هر خط از آن فایل را چه کسی نوشته.
  • درصورتی که در پروژه شما مشکلی بوجود آمد می‎توانید با گیت تغییرات را به عقب برگردانید.
  • می‎توانید پروژه تان را به شاخه های مختلف (Branch) تقسیم کنید و هر شاخه را بصورت مختلف ویرایش کنید.

گیت در عمل

استفاده گیت در واقعیت از تئوری آن هم آسانتر است!

گیت به راحتی نصب میشود. اگر از سیستم عامل ویندوز استفاده میکنید، فایل نصبی آن را از وب سایت رسمی گیت دانلود و نصب کنید.

اگر از لینوکس استفاده میکنید پس نصب آن بسیار آسانتر است،فقط لازم است که یکی از دو دستور زیر را اجرا کنید.

برای دبیان، Ubuntu و Mint :

apt-get install git

برای Centos، Redhat و Fedora:

yum install git

قبل از هر کاری هویتتان را به گیت معرفی کنید، این کار با اجرای دو دستور زیر امکان پذیر است (به جای دیوید جونز مشخصات خودتان را وارد کنید) که فقط یکبار انجام میپذیرد:

git config --global user.name "David Johnes"
git config --global user.email David.Johnes@yahoo.com

حالا از طریق ترمینال وارد پوشه پروژه بشوید و دستور زیر را برای تاسیس یک مخزن جدید وارد کنید:

git init

حالا کد بنویسید تا برنامه به نقطه ای برسد که بنظر شما یک تغییر خاص کرده.

دستور زیر را اجرا کنید تا git به شما بگوید که چه فایل هایی را ایجاد، حذف یا تغییر دادید:

git status

از لیست به نمایش داده شده آن فایل ها و پوشه هایی که مربوط به این تغییر شماست را انتخاب کنید و آن ها را اضافه کنید.

مثلا در تصویر زیر git به من لیستی از فایل های جدید و تغییر داده شده را به من میدهد.

فایل های جدید در قسمت Untracked files و فایل های تغییر داده شده در قسمت Change not staged for commit قرار گرفته.

فایل routing.json و پوشه controllers/panel/blog مربوط به تغییر مورد نظر من است و قصد ثبت آن ها را دارم؛ پس آن ها را معرفی میکنم:

git add routing.json controllers/panel/blog/

حالا اگر دوباره دستور git status را اجرا کنم آن ها را با رنگ سبز نشان میدهد:

در نهایت دستور زیر را برای ثبت تغییرات اجرا خواهیم کرد:

git commit

از شما درخواست میشود تا یک عنوان برای تغییراتان وارد کنید. هرچیزی دلتان میخواد وارد کنید اما استاندارد هایی وجود که بهتر است رعایت کنید:

  • عنوان تغییر را تا میتوانید ساده، شفاف و خلاصه وارد کنید.
  • عنوان را با حروف انگلیسی وارد کنید و قویا پیشنهاد میشود که از کلمات انگلیسی استفاده کنید.
  • عنوان حداکثر میتواند 70 کارکتر ascii باشد.
  • اگر نیاز دارید تا توضیحاتی ارائه کنید، عنوان را در خط اول وارد کنید، خط دوم را خالی رها کنید و توضیحاتتان در خطوط بعدی به هر اندازه اندازه ای که مایلید وارد کنید.
پیشنهاد می‎کنیم بخوانید:
برنامه نویسی برای مبتدیان - کنترل نسخه

حالا فایل را ذخیره کنید و خارج شوید. تغییرات شما ذخیره شده و میتوانید با دستور زیر تاریخچه تغییرات را مشاهده کنید:

git log

سوال 1: این شرایط برای زمانی است که من بر روی پروژه ی خودم کار کنم، اما اگر پروژه را کس دیگری قبلا ایجاد کرده باشد و من بخواهم در آن مشارکت کنم چه کار کنم؟

شما میبایست مخزن پروژه را از مالک آن دریافت کنید، این کار ممکن است از طریق راه های سنتی مثل کپی – پیست پوشه یا دریافت از طریق ایمیل یا فلش مموری انجام بشود و یا ممکن است مالک، مخزن را بر روی اینترنت قرار داده باشد و شما میتوانید آن را دریافت کنید.

مثلا اگر قصد کنید که مخزن فریمورک adminarea را دریافت کنید فقط کافی است آدرس آن را بدانید و آن را با دستور clone دانلود کنید:

git clone https://git.rasanegar.com/adminarea/base.git

حالا روال کار افزودن فایل ها و ذخیره تغییرات مثل این است که پروژه متعلق به خودتان است.

سوال 2: من یک تغییر را ثبت (Commit) کردم. چگونه آن را به  مدیر پروژه تحویل بدهم؟

اگر مخزن را از طریق اینترنت Clone کردید، پس فقط لازم است تا این دستور را اجرا کنید:

git push

اگر مخزن را بصورت دستی کپی-پیست کردید، پس می بایست برای تحویل تغییر مجددا آن را به روش کپی-پیست تحویل بدهید.

سوال 3: من میخواهم پروژه ای را شروع کنم و آن را با هم تیمی هایم توسعه دهم، چطور میتوانم یک مخزن آنلاین ایجاد کنم؟

در حال حاضر سرویس دهنده های بسیار خوبی در زمینه میزبانی مخازن Git فعالیت میکنند.

اگر پروژه شما Open-source است میتوانید از GitHub.com استفاده کنید، این مجموعه سورس پروژه شما را به هر وزن و اندازه ای که باشد به رایگان میزبانی میکند. اما اگر پروژه شما خصوصی و تجاری است بهتر است که خودتان یک سرور مجازی تهیه کنید و GitLab را بر روی آن راه اندازی کنید. (رسانگار برای این کار قالب های از پیش آماده ای را فراهم کرده است)

بعد از اینکه مخزن را بر روی یک سرور راه اندازی کردید، ابتدا با دستور زیر آن را به عنوان مخزن اصلی یا بالادستی به مخزن داخل رایانه ی خودتان متصل کنید:

فرض کنید که آدرس مخزن این چنین باشد:

https://git.rasanegar.com/adminarea/base.git

پس این دستور را اجرا میکنیم:

git remote add origin https://git.jeyserver.com/webuilder/base.git

سپس با دستور push تمام تغییرات را بر روی سرور آپلود میکنیم:

git push -u origin master

سوال 4: من  تغییراتم را به سرور گیت ارسال کردم و بدون مشکلی ذخیره شد اما هنوز آن تغییرات در رایانه همکارم اعمال نشده، چرا؟!

دلیل ساده است، فرض کنید یک نفر در حین کارتان مرتبا کد های شما را تغییر بدهد و باعث بشود که برنامه بخوبی کار نکند.مخصوصا که شما دقیقا ندانید که کدام فایل ها را ویرایش میکند! آیا حس خوبی خواهید داشت؟

قطعا خیر! پس گیت برای حل این مشکل روال کار را اینطور قرار می دهد که شما کدتان را مینویسید، تغییرات را ثبت و به سرور برای ذخیره ارسال میکنید.همکارتان که بصورت موازی یا بعد از شما مشغول به کار است می بایست دستور زیر را اجرا کند تا آخرین تغییرات را دریافت کند:

git pull
عضو خبرنامه وبلاگ رسانگار شوید
عضو خبرنامه وبلاگ رسانگار شوید
با عضویت در خبرنامه ایمیلی، از جدیدترین اخبار و بروزرسانی ها و همچنین پیشنهادات ویژه ما بصورت دوره ای مطلع خواهید شد
در هر زمان می توانید عضویت خود را با یک کلیک لغو کنید