-
1. شروع به کار (getting started)
-
2. مقدمات گیت (git basics chapter)
- 2.1 گرفتن یک مخزن گیت (Getting a Git Repository)
- 2.2 ثبت تغییرات در مخزن (Recording Changes to the Repository)
- 2.3 مشاهده تاریخچه کامیتها (Viewing the Commit History)
- 2.4 بازگرداندن تغییرات (Undoing Things)
- 2.5 کار کردن با ریموت ها (Working with Remotes)
- 2.6 تگ کردن (Tagging)
- 2.7 نام مستعار گیت (Git Aliases)
- 2.8 خلاصه (summary)
-
3. انشعابگیری در گیت (Git Branching)
-
4. گیت روی سرور (Git on the server)
- 4.1 پروتکلها (The Protocols)
- 4.2 راهاندازی گیت روی یک سرور (Getting Git on a Server)
- 4.3 ایجاد کلید عمومی SSH شما (Generating Your SSH Public Key)
- 4.4 نصب و راهاندازی سرور (Setting up server)
- 4.5 سرویسدهنده گیت (Git Daemon)
- 4.6 HTTP هوشمند (Smart HTTP)
- 4.7 گیتوب (GitWeb)
- 4.8 گیتلب (GitLab)
- 4.9 گزینههای میزبانی شخص ثالث (Third Party Hosted Options)
- 4.10 خلاصه (Summary)
-
5. گیت توزیعشده (Distributed git)
-
6. GitHub (گیت هاب)
-
7. ابزارهای گیت (Git Tools)
- 7.1 انتخاب بازبینی (Revision Selection)
- 7.2 مرحلهبندی تعاملی (Interactive Staging)
- 7.3 ذخیره موقت و پاکسازی (Stashing and Cleaning)
- 7.4 Signing Your Work (امضای کارهای شما)
- 7.5 جستجو (Searching)
- 7.6 بازنویسی تاریخچه (Rewriting History)
- 7.7 بازنشانی به زبان ساده (Reset Demystified)
- 7.8 ادغام پیشرفته (Advanced Merging)
- 7.9 بازاستفاده خودکار از حل تضادها (Rerere)
- 7.10 اشکالزدایی با گیت (Debugging with Git)
- 7.11 سابماژول ها (Submodules)
- 7.12 بستهبندی (Bundling)
- 7.13 جایگزینی (Replace)
- 7.14 ذخیرهسازی اطلاعات ورود (Credential Storage)
- 7.15 خلاصه (Summary)
-
8. سفارشیسازی Git (Customizing Git)
-
9. گیت و سیستمهای دیگر (Git and Other Systems)
-
10. (Git Internals)
- 10.1 ابزارها و دستورات سطح پایین (Plumbing and Porcelain)
- 10.2 اشیا گیت (Git Objects)
- 10.3 مراجع گیت (Git References)
- 10.4 فایلهای بسته (Packfiles)
- 10.5 نگاشت (The Refspec)
- 10.6 پروتکلهای انتقال (Transfer Protocols)
- 10.7 نگهداری و بازیابی دادهها (Maintenance and Data Recovery)
- 10.8 متغیرهای محیطی (Environment Variables)
- 10.9 (Summary)
-
A1. پیوست A: گیت در محیطهای دیگر (Git in Other Environments)
- A1.1 رابط های گرافیکی (Graphical Interfaces)
- A1.2 Git در ویژوال استودیو (Git in Visual Studio)
- A1.3 Git در Visual Studio Code (Git in Visual Studio Code)
- A1.4 Git در IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine (Git in IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine)
- A1.5 Git در Sublime Text (Git in Sublime Text)
- A1.6 گیت در بش (Git in Bash)
- A1.7 Git در Zsh (Git in Zsh)
- A1.8 Git در PowerShell (Git in PowerShell)
- A1.9 خلاصه (Summary)
-
A2. پیوست B: گنجاندن گیت در برنامههای شما (Embedding Git in your Applications)
-
A3. پیوست C: دستورات گیت (Git Commands)
- A3.1 تنظیم و پیکربندی (Setup and Config)
- A3.2 گرفتن و ایجاد پروژهها (Getting and Creating Projects)
- A3.3 نمونهبرداری پایهای (Basic Snapshotting)
- A3.4 انشعابگیری و ادغام (Branching and Merging)
- A3.5 بهاشتراکگذاری و بهروزرسانی پروژهها (Sharing and Updating Projects)
- A3.6 بازرسی و مقایسه (Inspection and Comparison)
- A3.7 عیبیابی (Debugging)
- A3.8 اعمال تغییرات به صورت پچ (Patching)
- A3.9 ایمیل (Email)
- A3.10 سیستمهای خارجی (External Systems)
- A3.11 مدیریت (Administration)
- A3.12 دستورات سطح پایین گیت (Plumbing Commands)
2.1 مقدمات گیت (git basics chapter) - گرفتن یک مخزن گیت (Getting a Git Repository)
اگر فقط میتوانید یک فصل از این کتاب را بخوانید تا با گیت آشنا شوید و راه بیوفتید، دقیقاً همینجا است. این فصل شامل تمامی دستورات پایه گیت است که شما در اکثر اوقات از آنها استفاده میکنید.
در آخر این فصل شما قادر خواهید بود یک مخزن را پیکربندی و راهاندازی کنید، پیگیری فایلها را شروع کنید یا متوقف کنید و تغییرات را استیج و ثبت کنید. همچنین به شما نشان خواهیم داد که چگونه گیت را برای نادیده گرفتن برخی از فایلها و الگوهای فایلها تنظیم کنید، اشتباهات را به سرعت و راحتی بازگردانی کنید، در تاریخچه پروژه جستوجو کنیم و تغییرات ثبت شده بین کامیتها را مشاهده کنیم و پوش و پول از مخزن ریموت انجام دهیم.
گرفتن یک مخزن گیت (Getting a Git Repository)
شما معمولاً یک مخزن گیت را به یکی از دو روش بدست می آورید:
-
شما می توانید یک دایرکتوری محلی را که در حال حاضر تحت کنترل نسخه نیست، و آن را به یک مخزن گیت تبدیل کنید، یا
-
شما می توانید یک مخزن گیت موجود را از جای دیگر کلان کنید.
در هر صورت، شما یک مخزن گیت در ماشین محلی خود دارید که آماده کار است.
ایجاد مخزن در یک پوشه موجود (Initializing a Repository in an Existing Directory)
اگر یک دایرکتوری پروژه دارید که در حال حاضر تحت کنترل نسخه نیست و می خواهید با گیت شروع به کنترل آن کنید، ابتدا باید به دایرکتوری آن پروژه بروید. اگر شما هرگز این کار را انجام نداده اید، بسته به اینکه کدام سیستم را اجرا می کنید، کمی متفاوت به نظر می رسد:
برای لینوکس:
$ cd /home/user/my_project
for macOS:
$ cd /Users/user/my_project
for Windows:
$ cd C:/Users/user/my_project
و تایپ کنید:
$ git init
این یک زیر دایرکتوری جدید به نام .git
ایجاد می کند که شامل تمام فایل های ذخیره سازی مورد نیاز شما است — یک اسکلت ذخیره سازی گیت.
در این مرحله، هیچ چیز در پروژه شما هنوز ردیابی نشده است.
برای اطلاعات بیشتر در مورد اینکه دقیقاً چه فایل هایی در دایرکتوری .git
که تازه ایجاد کرده اید وجود دارد، به (Git Internals) مراجعه کنید.
اگر می خواهید نسخه فایل های موجود را کنترل کنید (در مقابل یک دایرکتوری خالی) ، احتمالا باید ردیابی این فایل ها را شروع کنید و یک commit اولیه انجام دهید.
شما می توانید این کار را با چند دستور git add
انجام دهید که فایل هایی را که می خواهید ردیابی کنید مشخص می کند، و سپس یک git commit
:
$ git add *.c
$ git add LICENSE
$ git commit -m 'Initial project version'
ما در یک دقیقه به آنچه که این دستورات انجام می دهند می پردازیم. در این مرحله، شما یک مخزن گیت با فایل های ردیابی شده و یک commit اولیه دارید.
کلون کردن یک مخزن موجود (Cloning an Existing Repository)
اگر می خواهید یک کپی از یک مخزن Git موجود را دریافت کنید - به عنوان مثال، پروژه ای که می خواهید در آن مشارکت کنید - دستور مورد نیاز شما git clone
است.
اگر با سایر سیستم های VCS مانند Subversion آشنا هستید، متوجه خواهید شد که دستور "clone" است و نه "checkout".
این یک تمایز مهم است — به جای دریافت فقط یک کپی کاری، گیت یک کپی کامل از تقریبا تمام داده هایی که سرور دارد را دریافت می کند.
هر نسخه از هر فایل برای تاریخچه پروژه به طور پیش فرض زمانی که شما git clone
را اجرا می کنید، پایین می آید.
در واقع، اگر دیسک سرور شما خراب شود، اغلب می توانید تقریباً از کلون ها در هر کلاینت استفاده کنید تا سرور را به حالت زمانی که کلون شده بود برگردانید (ممکن است برخی از قلاب های طرف سرور را از دست بدهید، اما تمام داده های نسخه ای وجود دارد - برای جزئیات بیشتر به راهاندازی گیت روی یک سرور (Getting Git on a Server) مراجعه کنید).
شما یک مخزن را با <git clone <url> `.
به عنوان مثال، اگر می خواهید کتابخانه قابل پیوند گیت به نام `libgit2
را کلان کنید، می توانید این کار را به این شکل انجام دهید:
$ git clone https://github.com/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) تمام گزینه های موجود را که سرور می تواند برای دسترسی به مخزن گیت شما تنظیم کند و مزایا و معایب هر یک را معرفی می کند.