Git
Chapters ▾ 2nd Edition

2.1 پایه‌های گیت - داشتن یک مخزن گیت

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

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

داشتن یک مخزن گیت

شما می توانید مخرن گیت را به یکی از دو روش زیر به دست آورید:

  1. یک پوشه محلی که تحت نظارت کنترل نسخه نیست، آن را به مخرن گیت تبدیل می کنید

  2. نسخه برداری کنید. (clone) از یک مخزن گیت موجود.

به هر روی شما یک مخزن گیت محلی دارید که آماده به کار است.

راه اندازی مخرن گیت در یک پوشه موجود

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

در لینوکس:

$ cd /home/user/my_project

برای مک:

$ cd /Users/user/my_project

در ویندوز:

$ cd C:/Users/user/my_project

و سپس در آنجا دستور زیر را بزنید:

$ git init

با زدن این دستور یک پوشه تاره به نام .git ساخته می شود که تمام فایلهایی که مخزن نیاز دارد — اسکلت یک مخزن گیت — را در برد دارد. تا ایجای کار، گیت تغییرات هیچ فایلی را دنبال نمی کند. (برای اینکه بدانید در پوشه .git که هم اکنون ایجاد کردید، چه فایلهایی وجود دارند، Git Internals را ببینید.)

اگر می‌خواهید شروع به کنترل نسخه فایل‌های موجود در پروژه کنید (مگر اینکه پوشه خالی باشد) شاید بهتر باشد که آنها را ترک یا مورد پیگیری قرار دهید و اولین کامیت یا کامیت ابتدایی را انجام دهید. شما می‌توانید با وارد کردن چند دستور git add مشخص کنید که چه فایل‌هایی ترک شوند و در اخر نیز آنها را با دستور git commit کامیت می‌کنید.

$ git add *.c
$ git add LICENSE
$ git commit -m 'Initial project version'

کمی جلوتر خواهید فهمید که دستورات بالا دقیقاُ چه کاری انجام می‌دهند. در حال حاضر ما یک مخزن گیت با فایل‌هایی که ترک شده‌اند و یک کامیت شروع داریم.

ساخت یک کلون از مخزن موجود

اگر می‌خواهید یک کپی کامل از یک مخزن از پیش موجود را داشته باشید — برای مثال، پروژه‌ای که علاقه دارید در آن مشارکت کنید-- دستوری که به آن احتیاج دارید git clone است. اگر کمی با دیگر نرم‌افزارهای کنترل نسخه آشنا باشید مانند ساب‌ورژن، متوجه‌ خواهید شد که دستور این فعل clone است، نه checkout،‌این یک تفاوت خیلی مهم است — به جای اینکه یک نسخه کپی از پروژه به دست آورید، گیت به طور مستقیم یک نسخه کامل از تمامی داده‌هایی که در سرور وجود دارد را تحویل می‌گیرد.

به صورت پیش‌فرض با اجرای دستور git clone هر نسخه‌ای از هر فایلی در تاریخچهٔ پروژه توسط گیت آورده می‌شود. در حقیقت اگر احیاناً دیسک سرور شما دچار مشکل گردد و اطلاعات از دست روند اکثرا شما این می‌توانید به طور مستقیم از هر کلون دیگری روی هر کلاینت دیگری استفاده کنید تا اطلاعات سرور را به همان حالتی که به هنگام کلون کردن بود بازگردد. (ممکن است بعضی از هوک‌های سرور و این قبیل اطلاعات از دست بروند اما تمام نسخه‌های کنترل شده خواهند ماند — برای جزئیات بیشتر Getting Git on a Server را مطالعه کنید.)

با دستور git clone (url) یک مخزن را کلون می‌کنید. برای مثال، اگر بخواهید یک کتاب‌خانه گیت قابل لینک به نام libgit2 را کلون کنید، می‌توانید با این روش انجام دهید:

$ git clone https://github.com/libgit2/libgit2

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

اگر بخواهید مخزن مورد نظر را در پوشه‌ای با نام دلخواه خودتون بجای libgit2 کلون کنید، می‌توانید نام پوشه دلخواه را مانند دستور پایین به عنوان آرگومان اضافه مشخص کنید.

$ git clone https://github.com/libgit2/libgit2 mylibgit

دستور بالا مراحل قبل را انجام می‌دهد با این تفاوت که نام پوشه‌ای که ساخته می‌شود mylibgit خواهد بود.

گیت دارای تعداد زیادی پروتکل‌های انتقال است که شما می‌توانید از آن‌ها استفاده کنید. در مثال قبل از پروتکل //:https استفاده شد، اما شاید شما //:git یا user@server:path/to/repo.git نیز دیده باشید، که از پروتکل SSH استفاده می‌کند. در Getting Git on a Server تمام گزینه‌های موجود برای را دسترسی به مخزن گیت را معرفی خواهد کرد و درباره مضرات و فواید هر کدام توضیح خواهد داد.