-
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)
A3.5 پیوست C: دستورات گیت (Git Commands) - بهاشتراکگذاری و بهروزرسانی پروژهها (Sharing and Updating Projects)
بهاشتراکگذاری و بهروزرسانی پروژهها (Sharing and Updating Projects)
دستورات بسیار کمی در Git وجود دارند که از شبکه استفاده میکنند؛ تقریباً همهٔ دستورات روی پایگاه دادهٔ محلی عمل میکنند. وقتی آمادهٔ اشتراکگذاری کارتان یا کشیدن (pull) تغییرات از منابع دیگر هستید، چند دستور وجود دارند که با مخازن راه دور سر و کار دارند.
دریافت بهروزرسانیها از مخزن راهدور (git fetch)
دستور git fetch با یک مخزن راه دور ارتباط برقرار کرده و تمام اطلاعاتی را که در آن مخزن هست ولی در مخزن جاری شما نیست، دانلود کرده و در پایگاه دادهٔ محلی شما ذخیره میکند.
ما ابتدا این دستور را در فچ و پول کردن از ریموت های شما (Fetching and Pulling from Your Remotes) بررسی میکنیم و مثالهای بیشتری از کاربرد آن را در شاخههای راه دور (Remote Branches) میبینیم.
همچنین از آن در چند مثال در مشارکت در یک پروژه (Contributing to a Project) استفاده میکنیم.
ما از آن برای بازیابی یک ارجاع (reference) خاص که خارج از فضای پیشفرض است در رفرنسهای درخواست کشش (Pull Request Refs) استفاده میکنیم و میبینیم چگونه از یک bundle فراخوانی (fetch) کنیم در بستهبندی (Bundling).
دریافت و ادغام بهروزرسانیها از مخزن راهدور (git pull)
ما refspecهای بسیار سفارشی را تنظیم میکنیم تا git fetch کاری کمی متفاوت از حالت پیشفرض انجام دهد در نگاشت (The Refspec).
دستور git pull اساساً ترکیبی از دو دستور git fetch و git merge است، که در آن گیت از راه دوری را که مشخص میکنید میگیرد و سپس فوراً سعی میکند آن را با شاخهای که رویش هستید ادغام کند.
ما آن را بهطور مختصر در فچ و پول کردن از ریموت های شما (Fetching and Pulling from Your Remotes) معرفی میکنیم و نشان میدهیم اگر آن را اجرا کنید چه چیزی را ادغام خواهد کرد در بررسی مخزن راهدور (Inspecting a Remote).
ما نشان میدهیم چگونه میتوان از آن با یک URL برای یکبار کشیدن تغییرات استفاده کرد (نگاه کنید به <<_checking_out_remotes>>).
در نهایت بهطور کوتاه اشاره میکنیم که میتوانید از گزینهٔ --verify-signatures برای آن استفاده کنید تا تأیید کنید کمیتهایی که میکشید با GPG امضا شدهاند (نگاه کنید به امضای کامیتها (Signing Commits)).
ارسال تغییرات به مخزن راهدور (git push)
دستور git push برای ارتباط با مخزن دیگر، محاسبهٔ تفاوت بین پایگاهدادهٔ محلی شما و مخزن راه دور و سپس فشار دادن (منتقلکردن) آن تفاوت به مخزن دیگر استفاده میشود. این دستور نیاز به دسترسی نوشتن روی مخزن دیگر دارد و بنابراین معمولاً بهنوعی احراز هویت میشود.
ابتدا به دستور git push در Pushing to Your Remotes (پوش کردن به ریموت های شما) میپردازیم. در اینجا اصول پایهٔ فرستادن یک شاخه به مخزن راه دور را پوشش میدهیم. در ارسال (Pushing) به جزئیات بیشتری دربارهٔ فرستادن شاخههای مشخص میپردازیم و در شاخههای دنبالکننده (Tracking Branches) میبینیم چگونه شاخههای دنبالکننده را طوری تنظیم کنیم که بهطور خودکار برایشان push انجام شود. در حذف شاخه ها (Deleting Remote Branches) از فلگ --delete برای حذف یک شاخه در سرور با استفاده از git push استفاده میکنیم.
در سراسر مشارکت در یک پروژه (Contributing to a Project) چندین مثال از استفادهٔ git push برای اشتراکگذاری کار روی شاخهها از طریق چند مخزن راه دور میبینیم.
میبینیم چگونه با گزینهٔ --tags تگهایی را که ساختهاید به اشتراک بگذارید (نگاه کنید به اشتراک گذاری تگ ها (Sharing Tags)).
در انتشار تغییرات زیرماژول (Publishing Submodule Changes) از گزینهٔ --recurse-submodules استفاده میکنیم تا بررسی کنیم همهٔ کارهای زیرماژولها منتشر شدهاند قبل از اینکه سوپرپروژه را push کنیم، که هنگام استفاده از زیرماژولها بسیار مفید است.
در هوک های دیگر کلاینت (Other Client Hooks) مختصراً دربارهٔ hook بهنام pre-push صحبت میکنیم، اسکریپتی که میتوانیم تنظیم کنیم تا قبل از تکمیل push اجرا شود و بررسی کند آیا اجازهٔ push داده شود یا نه.
در نهایت، در <<_pushing_refspecs>> به فرستادن (push) با یک refspec کامل میپردازیم، نه میانبُرهای کلی که معمولاً استفاده میشوند. این کار به شما کمک میکند دقیقاً مشخص کنید چه کاری را میخواهید به اشتراک بگذارید.
مدیریت مخازن راهدور (git remote)
دستور git remote ابزاری برای مدیریت فهرست مخازن راهدور (remote) شماست. این دستور به شما اجازه میدهد آدرسهای طولانی را به نامهای کوتاه مانند «origin» ذخیره کنید تا مجبور نباشید همیشه آنها را تایپ کنید. شما میتوانید چندین نام از این دست داشته باشید و دستور git remote برای افزودن، تغییر و حذف آنها استفاده میشود.
این دستور بهصورت مفصل در کار کردن با ریموت ها (Working with Remotes) پوشش داده شده است، از جمله فهرستگیری، افزودن، حذف و تغییر نام مخازن راهدور.
این دستور در تقریباً همه فصلهای بعدی کتاب نیز استفاده میشود، اما همیشه در قالب استاندارد git remote add <name> <url> به کار رفته است.
ایجاد آرشیو از مخزن (git archive)
دستور git archive برای ایجاد یک فایل آرشیو از یک تصویر (snapshot) خاص از پروژه به کار میرود.
ما از git archive برای ساخت یک tarball از پروژه جهت به اشتراکگذاری در آمادهسازی نسخه انتشار (Preparing a Release) استفاده میکنیم.
مدیریت زیرماژولها (git submodule)
دستور git submodule برای مدیریت مخازن خارجی درون یک مخزن عادی به کار میرود. این میتواند برای کتابخانهها یا انواع دیگر منابع مشترک مفید باشد. دستور submodule دارای چند زیردستور (مثل add، update، sync و غیره) برای مدیریت این منابع است.
این دستور تنها ذکر شده و بهطور کامل در سابماژول ها (Submodules) پوشش داده شده است.