31
تشکر

آموزش سیستم کنترل نسخه git – بخش اول

git

git

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

مقدمه

سیستم متن باز git توسط Linus Torvalds یعنی سازنده لینوکس در زمان ایجاد سیستم عامل لینوکس ایجاد شد. علاوه بر git سیستم‌های کنترل نسخه مختلفی مانند CVS, Perforce, Subversion و … نیز وجود دارند که هر کدام میتوانند ویژگی‌های منحصربفرد خودشان را داشته باشند.

نصب

با رفتن به سایت git-scm.com میتوانید نسخه مربوط به سیستم عامل خودتان را دانلود کنید و پس از نصب وارد خط فرمان میشویم. در هنگام نصب git، در سیستم عامل ویندوز، شما میتوانید انتخاب کنید که آیا git تنها از خط فرمان خود git یعنی git bash قابل دسترس باشد یا از طریق Command Prompt هم قابل دسترس باشد که بسته به انتخاب شما، وارد محیط خط فرمان مورد نظر میشویم.

استفاده از Git

تنظیمات

اولین کاری که باید بعد از نصب git انجام داد، ثبت ایمیل و نام خودتان در تنظیمات git است، تا git در مواقع ثبت داده‌ها، مشخص کند که کدام کاربر در حال تغییر در سیستم است.
برای اینکار دو کد زیر را اجرا کنید و درون کوتیشن ها را به دلخواه خودتان پر کنید.

git config --global user.name "Your Name"
git config --global user.email "your@email.com"

git init

ابتدا یک پروژه تست را در نظر میگیریم و یک پوشه برای آن میسازیم. سپس با استفاده از دستور cd به آن پوشه تغییر مکان میدهیم. حالا برای اینکه این پروژه را وارد سیستم git کنیم ابتدا باید اولین بار دستور git init را اجرا کنیم. با اجرای این دستور یک پوشه با نام git. در ریشه پروژه شما ایجاد میشود. این پوشه نسخه های مختلف پروژه های شما را درون خود نگه میدارد.

git init

git init

git add

خب ما بر روی پروژه کار میکنیم و چندین فایل و پوشه جدید به پروژه اضافه میکنیم.

git

git

حالا باید اولین commit را انجام دهیم. یک commit در‌ واقع یک اشاره گره به وضعیت پروژه شما در حال حاضر است. در‌ واقع شما در git میتوانید به یک commit در گذشته برگشت (rollback) داشته باشید. برای انجام هر commit ابتدا شما باید فایل‌هایی را که میخواهید آن‌ها در commit شرکت داشته باشند را انتخاب کنید (staging area).
برای اینکار از دستور git add استفاده میکنیم. برای مثال کد زیر، تمام فایل‌ها و پوشه های پروژه ما را به staging area میبرد.

git add .

یا با استفاده از کدهای زیر میتوانید تنها فایل‌های خاصی را به staging area ببرید.

git add *.js
git add index.html

git commit

حالا که ما فایلهایمان را به git معرفی کردیم باید commit را انجام دهیم. هر commit با استفاده از یک هش SHA با 256 کاراکتر شناسایی می‌شود که این هش برای هر commit یکتا است و برای rollback به یک commit باید از این هش استفاده کنیم اما فعلاً نگران آن نباشید.
هر commit باید یک پیام هم همراه خود داشته باشد که این پیام میتواند توسط تنظیم m- مشخص گردد.
در دستور زیر، ما اولین commit را با یک پیام انجام میدهیم.

git commit -m "initial commit"

اگر پیام را با تنظیم m- مشخص نکنید، git یک ادیتور برای شما باز میکند که پیام را درون آن بنویسید.

git commit

git commit

git status

دستور git status، اطلاعاتی را از وضعیت فعلی git به شما میدهد.
در هر زمانی میتوانید این دستور را اجرا کنید تا از وضعیت git خودتان آگاه شوید.

git log

دستور git log لیست commitها و فعالیت‌های git شما را نشان میدهد.

git branch / git checkout

branchها ویژگی مهمی از git هستند. شما میتوانید نسخه های مختلفی از کدهای خودتان داشته باشید. برای مثال در این پروژه من یک ایده جدید دارم و میخواهم آن را پیاده‌سازی کنم، اما پیاده‌سازی این ایده باعث تغییر در بیشتر قسمت‌های پروژه می‌شود و از طرفی ممکن است این ایده به سرانجام نرسد بنابراین برای اینکه پروژه فعلی صدمه نبیند، یک نسخه از پروژه برای این ایده ایجاد میکنم و روی آن نسخه کار میکنم و هر زمان که لازم می‌شود میتوانم بین نسخه های مختلف سوئیچ کنم.
با استفاده از دستور git branch میتوانید لیست نسخه های مختلف از پروژه تان را مشاهده کنید. توجه کنید که زمانی که شما دستور git init را اجرا میکنید، خود git یک نسخه با نام master ایجاد میکند و شما در حالت عادی بر روی این branch کار میکنید.

حالا با استفاده از دستور زیر یک نسخه جدید با نام newIdea ایجاد میکنم. این دستور تنها branch را ایجاد میکند ولی به آن سوئیچ نمیکند.

git branch newIdea

حالا اگر دوباره دستور git branch را اجرا کنید، مشاهده میکنید که الان دو نسخه متفاوت داریم. حالا من میخواهم روی نسخه newIdea کار کنم. برای سوئیچ روی این نسخه از دستور checkout استفاده میکنیم.

git checkout newIdea

حالا که روی نسخه newIdea هستیم هر commitیی که انجام دهیم روی این نسخه است و به نسخه های دیگر ربطی ندارد و روی آن‌ها اثری ندارد. برای مثال شما روی نسخه newIdea یک فایل جدید ایجاد و commit میکنید و زمانی که به نسخه master می‌روید مشاهده میکنید که آن فایل در این نسخه وجود ندارد.

git branch

git branch

git merge

برای اینکه دو نسخه را با یکدیگر ادغام کنید ابتدا باید روی نسخه اصلی بروید و سپس با استفاده از دستور git merge آن‌ها را ادغام کنید.

git checkout master
git merge newIdea

نتیجه‌گیری

دستورهایی که در این مطلب به آن‌ها اشاره شد، هر کدام دارای تنظیمات مختلف دیگری نیز هستند که میتوانید برای اطلاعات بیشتر به سایت اصلی آن یعنی git-scm.com بروید.

  • سعید می‌گه:

    منتظر قسمت بعدی همچنان و همچنان هستیم
    سپاس

  • رضا می‌گه:

    سلام
    اقا محسن
    چرا دیر به دیر مطلب می زاری

  • آروین می‌گه:

    سلام
    میشه درباره ساخت عکس های این چنینی:
    http://aparnet.ir/wp-content/uploads/2013/01/bootstrap-cover_550.jpg
    و
    http://aparnet.ir/wp-content/uploads/2013/01/coateshire-responsive-design1.png

    یکم توضیح بدید؟ و اینکه ما چجوری باید یکی از اینا برای وبسایت خودمون بسازیم؟
    واینکه اصلا به این عکس ها اصطلاحا چی میگن؟

    خیلی ممنون از زحماتتون.

  • زیاد به کارمون نمیاد چیزای ساده تر و بهترم هست تازه این کار باهاش اعصاب میخواد

  • رضا احمدی می‌گه:

    مطالب خوبتونو همیشه میخونم. نمیدونم مثل شما که کامل و جامع مینویسن کم هستند یا اینکه من خبر ندارم. کاش یه لیست از وبلاگ هایی که دنبال میکنی رو معرفی می کردی…
    موفق باشی

  • حمید می‌گه:

    استاد ببخشید یه سوال خارج از این آموزش داشتم
    این سایت مدیریت محتواش چیه؟
    http://www.amtis.ir
    ممنون میشم بهم بگید لطفااا

  • آروین می‌گه:

    سلام
    باز هم مطالبتون عالی بود. خیلی ممنون.

  • علی می‌گه:

    بسیار عالی و کاربردی بود. خیلی دنبال همچین مطلبی بودم. بسیار تشکر…


  • نظرات این مطلب بسته است.