-
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.2 گیت روی سرور - راهاندازی گیت در سرور
راهاندازی گیت در سرور
در این بخش درباره راهاندازی یک سرور گیت که اینپروتکلها را اجرا میکند خواهیم خواند.
یادداشت
|
ما در اینجا مراحل اولیه و ساده نصب و راهاندازی بر روی سرور مبتنی بر لینوکس را یاد خواهیم گرفت، اگرچه راهاندازی این سرویسها بر روی مک و ویندوز نیز امکانپذیر هستند. در واقع راهاندازی چنین سروری در سیستمهای شما از نظر ابزاری و امنیتی مشکلات و تفاوتهای زیادی را درپی خواهد داشت اما در هر صورت هدف ما، ارائه یک ایدهٔ کلی درباره راهاندازی سرور گیت به شما است. |
برای راهاندازی اولیه هر سرور گیت، باید یک مخزن موجود را به یک مخزن بِر جدید صادر کنیم — مخزنی که شامل هیچ working directory
نباشد.
معمولاً این کار بسیار ساده است.
برای اینکه مخزن خود را کلون کنید و یک مخزن بر جدید بسازید، دستور clone
را با آپشن --bare
اجرا میکنید.
به طور قرار دادی، نامهای پوشه مخزن بر با پسوند git.
تمام میشود، به این صورت:
$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.
در حال حاضر شما باید یک کپی از اطلاعات پوشه گیت در پوشه my_project.git
خود داشته باشید.
تقریباً و به طور خیلی کلی این معادل چنین چیزی است:
$ cp -Rf my_project/.git my_project.git
مقدار کمی تفاوتهای جزئی در فایل پیکربندی وجود دارد اما برای هدف شما، این تقریباً همان کار را میکند. خودش مخزن گیت را همراه دارد؛ بدون پوشه کاری و یک پوشه به طور اختصاصی، تنها برای آن میسازد.
قرار دادن مخزن بِر در سرور
حالا که شما یک کپی بِر از مخزنتان دارید، تمام کاری باید انجام دهید این است که آن را در یک سرور قرار دهید و پروتکلهای خودتان را نصب و راهاندازی کنید.
فرض کنیم شما سروری با نام git.example.come
را نصب و راهاندازی کردهاید که به آن دسترسی SSH دارید و میخواهید تمام مخزنهای گیت خود را زیر پوشه /srv/git
ذخیره کنید.
فرض کنیم پوشه /srv/git
در سرور وجود دارد، شما میتوانید مخزن جدید خود را با کپی کردن مخزن بِر به آنجا راهاندازی کنید:
$ scp -r my_project.git user@git.example.com:/srv/git
در این لحظه، دیگر کاربران که دسترسی خواندن پوشه /srv/git
بر بستر SSH در آن سرور را دارند میتوانند مخزن را با استفاده از دستور زیر کلون کنند:
$ git clone user@git.example.com:/srv/git/my_project.git
اگر یک کاربر با SSH به سرور وارد شود و دسترسی نوشتن به پوشه /srv/git/my_project.git
داشته باشد، به طور خودکار دسترسی پوش نیز خواهد داشت.
اگر دستور git init
را با آپشن --shared
اجرا کنید، گیت به طور خودکار دسترسیهای نوشتن گروه را به مخزن اضافه خواهد کرد.
توجه داشته باشید که با اجرای این دستور، شما هیچ کامیت، رف، و… دیگری را نابود نخواهید کرد:
$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared
حالا میبینید که گرفتن یک مخزن گیت، ساخت نسخه بِر و قرار دادن آن روی سروری که شما و مشارکت کنندگان به آن دسترسی دارید، چقدر ساده است. اکنون آماده هستید تا بر روی یک پروژه همکاری کنید.
خیلی مهم است که به خاطر داشته باشید که این به معنای واقعی کلمه تمام چیزی هست که نیاز دارید تا یک سرور گیت کاربردی راهاندازی کنید که چندین کاربر به آن دسترسی دارند — فقط حسابهایی با قابلیت SSH به سرور اضافه کنید و مخزن بِر را جایی بگذارید تا همهٔ کاربران دسترسی خواندن و نوشتن به آن داشته باشند. حالا شما آماده کار هستید — هیچ کار دیگری نیاز نیست.
در چند قسمت بعدی، خواهید دید که نحوه گسترش راهاندازیهای پیچیدهتر چگونه است. این بحث شامل مجبور نبودن به ساخت حسابهای کاربری به ازای هر کاربر، اضافه کردن دسترسی خواندن عمومی به مخزنها، راهاندازی رابطهای کاربری وب و بیشتر خواهد بود. با این حال، به خاطر داشته باشید که تمام چیزی که برای مشارکت با تعدادی کمی از افراد بر روی یک پروژه خصوصی لازم دارید، یک مخزن بِر و یک سرور SSH است.
راهاندازیهای کوچک
اگر شما گروه کوچکی هستید یا فقط درحال امتحان گیت در سازمانتان هستید و تعداد کمی توسعهدهنده دارید، برای شما خیلی چیزها میتواند ساده باشند. یکی از پیچیدهترین جنبههای راهاندازی سرور گیت مدیریت کاربران است. اگر شما بخواهید بعضی از مخزنها، برای کاربران مشخصی فقط خواندنی و برای دیگران نوشتنی/خواندنی باشند، مدیریت و تعیین دسترسی و سطح دسترسیها میتواند کمی سختتر باشد.
دسترسی SSH
اگر سروری دارید که همهٔ توسعهدهندگان شما از قبل به آن دسترسی SSH دارند، عموماً راحتترین جا برای راهاندازی اولین مخزنتان است، چرا که تقریباً هیچکاری نیاز نیست انجام دهید (همانطور که در بخش آخر درباره آن گفته بودیم). اگر انواع پیچیدهتری از مجوزهای کنترل دسترسی بر روی مخزنتان میخواهید، میتوانید آنها را به وسیله مجوزهای معمولی فایلسیستم در سیستمعامل سرور خود کنترل کنید.
اگر میخواهید مخزنتان را در سروری قرار دهید که هیچ حساب کاربری برای هیچ یک از اعضای تیم شما که میخواهید به آنها دسترسی نوشتن اعطا کنید ندارد، باید برای آنها دسترسی SSH راهاندازی کنید. ما فرض میکنیم که اگر شما سروری دارید که میخواهید با آن این کار را کنید، از قبل سرور SSH نصب شده دارید و نحوه دسترسی شما به سرور هم همین است.
چندین راه وجود دارد که میتوانید از طریق آنها اجازه دسترسی به هر شخص در تیمتان بدهید.
اول راهاندازی حسابهای کاربری برای همه است که ساده است، اما میتواند دستوپاگیر باشد.
ممکن است نخواهید هربار دستور adduser
(یا دستور جایگزین احتمالی useradd
) را اجرا کنید و مجبور به تنظیم رمزهای عبور موقتی برای هر کاربر جدید باشید.
دومین روش ساخت یک حساب «git» واحد بر روی دستگاه، درخواست دریافت کلید SSH عمومی از هر کاربری که دسترسی نوشتن دارد و اضافه کردن آن کلید به فایل ~/.ssh/autorized_keys
آن حساب جدید «git» است.
پس از این، همه قادر به دسترسی به آن ماشین به وسیله همان اکانت «git» هستند.
این کار به هیچ وجه هیچ تأثیری بر روی اطلاعات کامیت نخواهد داشت — کاربر SSH که از طریق آن متصل هستید هیچ تأثیری بر کامیتهایی که شما ضبط کردهاید نمیگذارد.
راه دیگری که میتوانید بروید این است که سرور SSH خود را وادار به احراز هویت از یک سرور LDAP یا نوعی دیگر از منابع تصدیق هویت متمرکزی کنید که شاید از قبل راهاندازی کردهاید. تا زمانی که هر کاربر بتواند به دستگاه دسترسی شل داشته باشد، هر مکانیزم تصدیق هویت SSH دیگری که میتوانید به آن فکر کنید باید کار کند.