-
1. شروع به کار
- 1.1 دربارهٔ کنترل نسخه
- 1.2 تاریخچهٔ کوتاهی از گیت
- 1.3 گیت چیست؟
- 1.4 خط فرمان
- 1.5 نصب گیت
- 1.6 اولین راهاندازی گیت
- 1.7 کمک گرفتن
- 1.8 خلاصه
-
2. مقدمات گیت
- 2.1 دستیابی به یک مخزن گیت
- 2.2 ثبت تغییرات در مخزن
- 2.3 دیدن تاریخچهٔ کامیتها
- 2.4 بازگردانی کارها
- 2.5 کار با ریموتها
- 2.6 برچسبگذاری
- 2.7 نامهای مستعار در گیت
- 2.8 خلاصه
-
3. شاخهسازی در گیت
- 3.1 شاخهها در یک کلمه
- 3.2 شاخهسازی و ادغام مقدماتی
- 3.3 مدیریت شاخه
- 3.4 روند کاری شاخهسازی
- 3.5 شاخههای ریموت
- 3.6 ریبیسکردن
- 3.7 خلاصه
-
4. گیت روی سرور
- 4.1 پروتکلها
- 4.2 راهاندازی گیت در سرور
- 4.3 ساختن کلید عمومی SSH
- 4.4 نصب و راهاندازی سرور
- 4.5 دیمن گیت
- 4.6 HTTP هوشمند
- 4.7 گیتوب
- 4.8 گیتلب
- 4.9 گزینههای شخصی ثالث میزبانی شده
- 4.10 خلاصه
-
5. گیت توزیعشده
- 5.1 روندهای کاری توزیعشده
- 5.2 مشارکت در یک پروژه
- 5.3 نگهداری یک پروژه
- 5.4 خلاصه
-
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. Customizing Git
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Summary
-
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
-
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 in Visual Studio
- A1.3 Git in Visual Studio Code
- A1.4 Git in Eclipse
- A1.5 Git in IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.6 Git in Sublime Text
- A1.7 Git in Bash
- A1.8 Git in Zsh
- A1.9 Git in PowerShell
- A1.10 Summary
-
A2. پیوست B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
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 گیت روی سرور - دیمن گیت
دیمن گیت
در مرحله بعد یک دیمن میزبان مخازن را با پروتکل «گیت» راه خواهیم انداخت. این انتخاب رایج برای دسترسی سریع و تصدیق هویت نشده به دادههای گیتتان است. یادتان باشد که از آنجایی که این یک سرویس تصدیق هویت شده نیست، هر چیزی که بر پایه این پروتکل در شبکه میزبانی شود، عمومی است.
اگر این پروتکل را روی سروری خارج از فایروال خود اجرا میکنید، بهتر است فقط برای پروژههایی که به صورت عمومی برای تمام جهان قابل مشاهده است استفاده شود. اگر سروری که با آن سروکار دارید درون فایروالتان است، ممکن است از آن برای پروژههای که تعداد کثیری از مردم یا کامپیوترها (یکپارچهسازی مداوم یا سرورهای ساخت) به آن دارند دسترسی فقط-خواندن استفاده کنید، زمانی که نخواهید برای هر کدام یک کلید SSH اضافه کنید.
در هر صورت نصب و راهاندازی پروتکل گیت نسبتاً آسان است. اصولاً، لازم است این دستور را مانند دیمنهای دیگر (دیمنیزه) اجرا کنید:
$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
آپشن --reuseaddr
به سرور این امکان را میدهد که بدون اینکه لازم باشد تا اتصالات قدیمی تایم-اوت دهند ریسارت شود، مادامی که آپشن --base-path
به مردم اجازه میدهد تا بدون وارد کردن کامل مسیر ورودی پروژه را کلون کنند و مسیر در آخر به دیمن گیت خواهد گفت در کجا به دنبال مخازن برای خروجی گرفتن بگردد.
اگر فایروال دارید، مستلزم خواهید بود که تا راهی بر روی پورت ۹۴۱۸ روی آن باز کنید.
با توجه به سیستمعاملی که استفاده میکنید، چندین راه برای دیمنیزه کردن این فرآیند دارید.
از آنجایی که systemd
یکی از رایجترین اینیتسیستمها بین توزیعهای مدرن لینوکس است، میتوانید از آن برای این کار استفاده کنید.
خیلی ساده، فایلی را با محتویات زیر در /etc/systemd/systemm/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
، هم به عنوان گروه و کاربر، شروع شده است.
آن را با توجه به نیاز خود اصلاح کنید و مطمئن شوید که کاربر نام برده در سیستم وجود دارد.
همچنین، چک کنید که باینری گیت در مسیر /usr/bin/git
قرار داشته باشد و اگر لازم است مسیرش را تغییر دهید.
در آخر، دستور systemctl enable git-daemon
را اجرا خواهید کرد تا این سرویس به صورت خودکار در موقع بوت سیستم نیز اجرا شود،
و همچنین میتوانید این سرویس را، به ترتیب با دستورهای systemctl start git-daemon
و systemct stop git-daemon
، شروع یا متوقف کنید.
بعد، باید به گیت بگویید که برای کدام مخازن اجازه دسترسی بدون تصدیق هویت وجود داشته باشد.
میتوانید این کار را برای هر مخزن با ساخت یک فایل به نام git-daemon-export-ok
انجام دهید.
$ cd /path/to/project.git
$ touch git-daemon-export-ok
حضور آن فایل به گیت میگوید که میزبانی این پروژه بدون تصدیق هویت مشکلی ندارد.