-
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)
4.5 گیت روی سرور (Git on the server) - سرویسدهنده گیت (Git Daemon)
سرویسدهنده گیت (Git Daemon)
در مرحله بعد، یک سرویسدهنده (daemon) راهاندازی میکنیم که مخازن را با استفاده از پروتکل «Git» ارائه میدهد. این روش، گزینهای رایج برای دسترسی سریع و بدون احراز هویت به دادههای Git شماست. به یاد داشته باشید که از آنجا که این سرویس احراز هویت ندارد، هر چیزی که از طریق این پروتکل ارائه شود در شبکهی مربوطه به صورت عمومی قابل دسترسی خواهد بود.
اگر این سرویس را روی سروری خارج از دیوار آتش خود اجرا میکنید، باید فقط برای پروژههایی استفاده شود که برای عموم قابل مشاهده هستند. اگر سرور داخل دیوار آتش شما قرار دارد، میتوانید از آن برای پروژههایی استفاده کنید که تعداد زیادی از افراد یا سیستمها (مانند سرورهای یکپارچهسازی مداوم یا ساخت) دسترسی فقطخواندنی دارند، و نمیخواهید برای هرکدام کلید SSH اضافه کنید.
در هر صورت، پروتکل Git نسبتاً آسان برای راهاندازی است. در اصل، باید این دستور را به صورت یک سرویسدهنده اجرا کنید:
$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
گزینه --reuseaddr
اجازه میدهد سرور بدون انتظار برای پایان اتصالهای قدیمی مجدداً راهاندازی شود، در حالی که گزینه --base-path
امکان کلون کردن پروژهها را بدون نیاز به مشخص کردن مسیر کامل فراهم میکند، و مسیری که در انتهای دستور میآید به سرویسدهنده Git میگوید کجا به دنبال مخازن برای ارائه باشد.
اگر دیوارآتش دارید، باید پورت ۹۴۱۸ را روی سیستمی که این سرویس را راهاندازی میکنید باز کنید.
شما میتوانید این فرآیند را به روشهای مختلفی به صورت daemon اجرا کنید، بسته به سیستمعامل مورد استفاده.
از آنجایی که systemd
رایجترین سیستم init در توزیعهای مدرن لینوکس است، میتوانید از آن برای این منظور استفاده کنید.
کافی است فایلی با محتویات زیر در مسیر /etc/systemd/system/git-daemon.service
قرار دهید:
[Unit]
Description=Start Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Restart=always
RestartSec=500ms
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon
User=git
Group=git
[Install]
WantedBy=multi-user.target
شاید متوجه شده باشید که سرویسدهنده Git اینجا با git
به عنوان گروه و کاربر اجرا شده است.
این موارد را متناسب با نیاز خود تغییر دهید و مطمئن شوید کاربر مربوطه روی سیستم وجود دارد.
همچنین بررسی کنید که فایل اجرایی Git واقعاً در مسیر /usr/bin/git
قرار دارد و در صورت لزوم مسیر را تغییر دهید.
در نهایت، با اجرای دستور systemctl enable git-daemon
سرویس به صورت خودکار در زمان راهاندازی سیستم فعال میشود، و میتوانید سرویس را با دستورهای systemctl start git-daemon
و systemctl stop git-daemon
به ترتیب راهاندازی و متوقف کنید.
در سیستمهای دیگر، ممکن است بخواهید از xinetd
، اسکریپتی در سیستم sysvinit
یا روش دیگری استفاده کنید — به شرطی که بتوانید آن دستور را به صورت daemon شده اجرا و مدیریت کنید.
در مرحله بعد باید به Git بگویید کدام مخازن اجازه دسترسی بدون احراز هویت از طریق سرور Git را دارند.
برای این کار، در هر مخزن باید فایلی به نام git-daemon-export-ok
ایجاد کنید.
$ cd /path/to/project.git
$ touch git-daemon-export-ok
وجود این فایل به Git اعلام میکند که ارائه این پروژه بدون نیاز به احراز هویت مجاز است.