-
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
2.1 مقدمات گیت - دستیابی به یک مخزن گیت
اگر فقط میتوانید یک فصل از این کتاب را بخوانید تا با گیت آشنا شوید و راه بیوفتید، دقیقاً همینجا است. این فصل شامل تمامی دستورات پایه گیت است که شما در اکثر اوقات از آنها استفاده میکنید.
در آخر این فصل شما قادر خواهید بود یک مخزن را پیکربندی و راهاندازی کنید، پیگیری فایلها را شروع کنید یا متوقف کنید و تغییرات را استیج و ثبت کنید. همچنین به شما نشان خواهیم داد که چگونه گیت را برای نادیده گرفتن برخی از فایلها و الگوهای فایلها تنظیم کنید، اشتباهات را به سرعت و راحتی بازگردانی کنید، در تاریخچه پروژه جستوجو کنیم و تغییرات ثبت شده بین کامیتها را مشاهده کنیم و پوش و پول از مخزن ریموت انجام دهیم.
دستیابی به یک مخزن گیت
به طور کل میتوانید به یکی از دو روش زیر یک مخزن به دست آورید:
-
یک پوشه محلی که تحت نظارت کنترل نسخه نیست را به مخزن گیت تبدیل کنید، یا
-
یک نسخه از یک مخزن از پیش موجود گیت را از جایی دیگر کلون کنید.
در هر صورت شما یک مخزن گیت محلی آماده به کار خواهید داشت.
راهاندازی مخزن گیت در یک پوشه موجود
اگر شما پروژهای دارید که هنوز تحت نظارت کنترل نسخه نیست و میخواهید که مدیریت نسخههای آن را به کمک گیت انجام دهید، ابتدا به پوشه اصلی پروژه بروید. اگر تا کنون این کار را نکردهاید، این کار بسته سیستمعامل شما ممکن است کمی متفاوت باشد:
در لینوکس:
$ cd /home/user/my_project
برای مک:
$ cd /Users/user/my_project
برای ویندوز:
$ cd C:/Users/user/my_project
و تایپ کنید:
$ git init
با زدن این دستور یک پوشه تازه به نام .git
ساخته میشود که تمام فایلهایی که مخزن نیاز دارد — اسکلت یک مخزن گیت — را در بر دارد.
تا اینجای کار، گیت تغییرات هیچ فایلی را دنبال نمیکند.
(برای اینکه بدانید در پوشه .git
که هم اکنون ایجاد کردید، چه فایلهایی وجود دارند، Git Internals را ببینید.)
اگر میخواهید شروع به کنترل نسخه فایلهای موجود در پروژه کنید (مگر اینکه پوشه خالی باشد) شاید بهتر باشد که آنها را ترک
یا مورد پیگیری قرار دهید و اولین کامیت یا کامیت ابتدایی را انجام دهید.
برای انجام این کار میتوانید با چند دستور git add
فایلهای انتخابی را رهگیری کنید و و در نهایت git commit
بزنید:
$ git add *.c
$ git add LICENSE
$ git commit -m 'Initial project version'
کمی جلوتر به بررسی کاربرد این دستورها میپردازیم. در حال حاضر یک مخزن گیت با فایلهایی که ترک شدهاند و یک کامیت شروع دارید.
کلونکردن از مخزن موجود
اگر میخواهید یک کپی کامل از یک مخزن از پیش موجود را داشته باشید — برای مثال، پروژهای که علاقه دارید در آن مشارکت کنید — دستوری که به آن احتیاج دارید git clone
است.
اگر کمی با دیگر نرمافزارهای کنترل نسخه مانند سابورژن آشنا باشید، متوجه خواهید شد که فعل این دستور clone
است، نه checkout
.
این یک تفاوت خیلی مهم است — به جای اینکه یک نسخه کپی از پروژه به دست آورید، گیت به طور مستقیم یک نسخه کامل از تمامی دادههایی که در سرور وجود دارد را تحویل میگیرد.
به صورت پیشفرض با اجرای دستور git clone
هر نسخهای از هر فایلی که در تاریخچهٔ پروژه است توسط گیت آورده میشود.
در حقیقت اگر احیاناً دیسک سرور شما دچار مشکل گردد و اطلاعات از دست روند غالباً میتوانید به طور مستقیم از هر کلون دیگری
روی هر کلاینت دیگری استفاده کنید تا اطلاعات سرور را به همان حالتی که به هنگام کلون کردن بود بازگردانید.
(ممکن است بعضی از هوکهای سرور و این قبیل اطلاعات از دست بروند اما تمام نسخههای کنترل شده خواهند ماند — برای جزئیات بیشتر راهاندازی گیت در سرور را مطالعه کنید.)
با دستور git clone <url>
یک مخزن را کلون میکنید.
برای مثال، اگر بخواهید یک کتابخانه گیت قابل لینک به نام libgit2
را کلون کنید، میتوانید اینگونه انجام دهید:
$ git clone https://github.com/libgit2/libgit2
با اجرای خط بالا در مرحلهٔ اول یک پوشه به نام libgit2
ساخته میشود، در پوشه libgit2
یک پوشه جدید به نام .git
ساخته شده
و مخزن گیت راهاندازی میشود، تمام اطلاعات از مخزن اصلی دریافت میشوند و ما را به اخرین نسخه از پروژه چکاوت میکند.
اگر وارد پوشه جدید libgit2
شوید، خواهید دید که فایلهای پروژه حاضر و آماده استفاده هستند.
اگر بخواهید مخزن مورد نظر را در پوشهای با نام دلخواه خودتان (بجای libgit2) کلون کنید، میتوانید نام پوشه دلخواه را مانند دستور پایین به عنوان آرگومان اضافه مشخص کنید:
$ git clone https://github.com/libgit2/libgit2 mylibgit
دستور بالا همان مراحل قبل را انجام میدهد، با این تفاوت که نام پوشهای که ساخته میشود mylibgit
خواهد بود.
گیت دارای تعداد زیادی پروتکلهای انتقال است که شما میتوانید از آنها استفاده کنید.
در مثال قبل از پروتکل https://
استفاده شد، اما شاید git://
یا user@server:path/to/repo.git
را نیز دیده باشید، که از پروتکل SSH استفاده میکند.
راهاندازی گیت در سرور تمام گزینههای موجود برای را دسترسی به مخزن گیت را معرفی خواهد کرد و درباره مضرات و فواید هر کدام توضیح خواهد داد.