SlideShare a Scribd company logo
‫با‬ ‫آشنایی‬GIT
‫دهنده‬‫ارائه‬:‫سهرابی‬ ‫امید‬
1
‫کاربر‬ ‫اطالعات‬
‫شده‬ ‫نصب‬ ‫تازه‬ ‫نسخه‬ ‫هر‬ ‫با‬ ‫که‬ ‫کاری‬ ‫اولین‬Git‫دهیم‬ ‫انجام‬ ‫باید‬
‫است‬ ‫کاربری‬ ‫اطالعات‬ ‫کردن‬ ‫ست‬.Git‫در‬ ‫اطالعات‬ ‫این‬ ‫از‬commit‫و‬ ‫ها‬
‫سرویسهایی‬ ‫همچنین‬ ‫و‬ ‫میکند‬ ‫استفاده‬ ‫پروژه‬ ‫تغییرات‬ ‫تاریخچه‬
‫همچون‬GitHub‫و‬Bitbucket‫استفاده‬ ‫شما‬ ‫شناسایی‬ ‫برای‬ ‫نام‬ ‫این‬ ‫از‬
‫میکنند‬.‫میباشد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫فرمان‬:
 git config --global user.name "Omid Sohrabi"
 git config --global user.email sohrabi@psi-co.net
‫سویچ‬--global‫باعث‬‫تمامی‬ ‫برای‬ ‫که‬ ‫میشود‬repository‫هایی‬‫روی‬ ‫بر‬ ‫که‬
‫یکسان‬ ‫الکترونیکی‬ ‫پست‬ ‫و‬ ‫کاربری‬ ‫نام‬ ‫میشوند‬ ‫ایجاد‬ ‫سیستم‬ ‫این‬
‫شود‬ ‫ثبت‬.‫برای‬ ‫میتوان‬ ‫نشود‬ ‫استفاده‬ ‫سویچ‬ ‫این‬ ‫از‬ ‫که‬ ‫صورتی‬ ‫در‬
‫ه‬‫ر‬repositroy‫کرد‬ ‫ست‬ ‫را‬ ‫الکترونیک‬ ‫پست‬ ‫و‬ ‫کاربر‬ ‫نام‬ ‫جداگانه‬.
2
‫نام‬‫ایجاد‬ ‫و‬ ‫مستعار‬Repository
‫به‬‫فرض‬ ‫پیش‬ ‫صورت‬Git‫دارای‬shortcut‫فرمانهای‬ ‫برای‬ ‫میانبر‬ ‫یا‬
‫نمیباشد‬ ‫خود‬.‫و‬ ‫کاربرد‬ ‫پر‬ ‫فرمانهای‬ ‫برای‬ ‫میتوانید‬ ‫شما‬ ‫اما‬
‫شده‬ ‫آورده‬ ‫مثال‬ ‫چند‬ ‫زیر‬ ‫در‬ ‫که‬ ‫کنید‬ ‫انتخاب‬ ‫مستعار‬ ‫نام‬ ‫طوالنی‬
‫است‬:
 git config --global alias.st status
 git config --global alias.ci commit
‫طراحی‬ ‫در‬Git‫همیشه‬‫پیچیدگی‬ ‫از‬ ‫هست‬ ‫ممکن‬ ‫که‬ ‫آنجا‬ ‫تا‬ ‫شده‬ ‫سعی‬
‫کنند‬ ‫دوری‬.‫بین‬ ‫فرق‬ ‫تنها‬‫یک‬Git Repository‫و‬‫زیر‬ ‫یک‬ ‫عادی‬ ‫پوشه‬ ‫یک‬
‫نام‬ ‫با‬ ‫اضافی‬ ‫پوشه‬.git‫میباشد‬ ‫پروژه‬ ‫جاری‬ ‫پوشه‬ ‫در‬.‫اینکه‬ ‫برای‬
‫یک‬ ‫به‬ ‫را‬ ‫عادی‬ ‫پوشه‬ ‫یک‬git repository‫تبدیل‬‫فرمان‬ ‫است‬ ‫کافی‬ ‫کنید‬
‫را‬ ‫زیر‬‫در‬git bash‫کنید‬ ‫اجرا‬:
 git init < path > 3
‫کردن‬ ‫کلون‬repository‫ها‬
‫در‬‫یک‬ ‫از‬ ‫کپی‬ ‫ای‬ ‫پوشه‬ ‫در‬ ‫هستید‬ ‫مایل‬ ‫که‬ ‫صورتی‬repositoryً‫قبال‬
‫فرمان‬ ‫از‬ ‫استفاده‬ ‫جای‬ ‫به‬ ‫دهید‬ ‫قرار‬ ‫را‬ ‫شده‬ ‫ایجاد‬init‫از‬ ‫باید‬
‫فرمان‬clone‫کنید‬ ‫استفاده‬ ‫زیر‬ ‫صورت‬ ‫به‬:
 git clone ssh://< user > @ < host > /path/to/repo.git
‫فرمان‬ ‫این‬ ‫اجرای‬ ‫با‬git‫به‬host‫با‬ ‫و‬ ‫شده‬ ‫متصل‬ ‫شده‬ ‫مشخص‬
‫از‬ ‫استفاده‬SSH‫دانلود‬ ‫به‬ ‫اقدام‬repo.git‫میکند‬ ‫پروژه‬.‫کپی‬
‫از‬ ‫کامل‬ ‫کپی‬ ‫یک‬ ‫شده‬ ‫ایجاد‬repository‫یک‬ ‫نه‬ ‫میباشد‬ ‫نظر‬ ‫مورد‬
‫آن‬ ‫به‬ ‫لینک‬.،‫پروژه‬ ‫پوشه‬ ،‫پروژه‬ ‫تاریخچه‬ ‫شما‬ ‫کپی‬ ‫این‬ ‫در‬
staging area‫و‬ ‫داشت‬ ‫خواهید‬ ‫را‬ ‫خود‬ ‫به‬ ‫منحصر‬ ‫های‬ ‫شاخه‬ ‫ساختار‬ ‫و‬
‫تا‬ ‫داشت‬ ‫نخواهد‬ ‫پروژه‬ ‫روی‬ ‫بر‬ ‫شما‬ ‫تغییرات‬ ‫به‬ ‫دسترسی‬ ‫هیچکس‬
‫سرور‬ ‫به‬ ‫را‬ ‫تغییرات‬ ‫و‬ ‫کنید‬ ‫را‬ ‫کامیت‬ ‫را‬ ‫تغییرات‬ ‫شما‬ ‫که‬ ‫زمانی‬
‫یا‬ ‫عمومی‬public‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬push‫کنید‬ ‫ارسال‬
4
Staging Area
‫در‬GIT‫کل‬‫تغییراتی‬ ‫تنها‬ ‫و‬ ‫نمیشوند‬ ‫ذخیره‬ ‫کرده‬ ‫تغییر‬ ‫فایلهای‬
‫این‬ ‫به‬ ‫خاطر‬ ‫همین‬ ‫به‬ ‫میشوند‬ ‫ذخیره‬ ‫شده‬ ‫اعمال‬ ‫آنها‬ ‫روی‬ ‫بر‬ ‫که‬
‫رکوردها‬snapshot‫باالی‬ ‫سرعت‬ ‫دالیل‬ ‫از‬ ‫یکی‬ ‫و‬ ‫میشود‬ ‫گفته‬GIT‫نیز‬
‫میباشد‬ ‫تکنیک‬ ‫این‬ ‫از‬ ‫استفاده‬.
‫منقطه‬staging‫ثبت‬ ‫از‬ ‫قبل‬ ‫میتوانید‬ ‫آن‬ ‫در‬ ‫شما‬ ‫که‬ ‫است‬ ‫مکانی‬
‫و‬ ‫بندی‬ ‫دسته‬ ‫را‬ ‫خود‬ ‫کامیتهای‬ ‫پروژه‬ ‫روی‬ ‫بر‬ ‫شده‬ ‫اعمال‬ ‫تغییرات‬
‫کنید‬ ‫مدیریت‬.‫از‬ ‫منظور‬staging‫انتقال‬‫پروژه‬ ‫پوشه‬ ‫از‬ ‫تغییرات‬
‫به‬snapshot‫میباشد‬.
5
Staging Area
‫به‬ ‫یافته‬ ‫تغییر‬ ‫یا‬ ‫و‬ ‫جدید‬ ‫فایلهای‬ ‫کردن‬ ‫اضافه‬ ‫برای‬staging
area‫از‬‫کنید‬ ‫استفاده‬ ‫زیر‬ ‫فرمان‬:
 git add < file >
‫به‬ ‫را‬ ‫آن‬ ‫ابتدا‬ ‫باید‬ ‫شما‬ ‫پروژه‬ ‫از‬ ‫فایل‬ ‫یک‬ ‫حذف‬ ‫برای‬staging
area‫اضافه‬‫به‬ ‫سپس‬ ‫و‬ ‫کنید‬git‫را‬ ‫فایل‬ ‫این‬ ‫دیگر‬ ‫که‬ ‫دهید‬ ‫فرمان‬
‫نکند‬ ‫ردیابی‬.‫هارد‬ ‫روی‬ ‫از‬ ‫فیزیکی‬ ‫صورت‬ ‫به‬ ‫را‬ ‫فایل‬ ‫فرمان‬ ‫این‬
‫تنها‬ ‫نمیکند‬ ‫پاک‬ ‫دیسک‬git‫نمیکند‬ ‫مانیتور‬ ‫را‬ ‫آن‬ ‫دیگر‬:
 git rm --cached < file >
‫وضعیت‬ ‫مشاهده‬repository‫یکی‬‫رایج‬ ‫عملیات‬ ‫از‬‫در‬Git‫میباشد‬.
‫پروژه‬ ‫پوشه‬ ‫از‬ ‫گزارشی‬ ‫زیر‬ ‫فرمان‬ ‫خروجی‬‫و‬staging area‫ارائه‬
‫میدهد‬:
 git status
6
Staging Area
‫بخش‬‫عنوان‬ ‫با‬ ‫اول‬Changes to be committed‫همان‬‫وضعیت‬stage‫شما‬
‫میباشد‬.‫فرمان‬ ‫اگر‬git commit‫را‬‫فایلهای‬ ‫تنها‬ ‫کنید‬ ‫اجرا‬ ‫االن‬
‫میشوند‬ ‫اضافه‬ ‫پروژه‬ ‫تاریخچه‬ ‫به‬ ‫بخش‬ ‫این‬ ‫در‬ ‫شده‬ ‫ذکر‬.‫دوم‬ ‫بخش‬
‫عنوان‬ ‫با‬Changes not staged for commit‫از‬ ‫فهرستی‬ ‫دارنده‬ ‫بر‬ ‫در‬
‫نمیباشند‬ ‫بعدی‬ ‫کامیت‬ ‫جزء‬ ‫که‬ ‫میباشد‬ ‫مانیتور‬ ‫حال‬ ‫در‬ ‫فایلهای‬.‫و‬
‫عنوان‬ ‫با‬ ‫آخر‬ ‫بخش‬ ‫در‬ ‫نهایت‬ ‫در‬Untracked files‫فایلهای‬ ‫از‬ ‫فهرستی‬
‫به‬ ‫که‬ ‫پروژه‬ ‫پوشه‬ ‫در‬ ‫موجود‬repository‫ارائه‬ ‫اند‬ ‫نشده‬ ‫اضافه‬
‫میشود‬
7
‫ایجاد‬Diff‫ها‬
‫تغییرات‬ ‫با‬ ‫رابطه‬ ‫در‬ ‫بیشتر‬ ‫اطالعات‬ ‫به‬ ‫نیاز‬ ‫که‬ ‫صورتی‬ ‫در‬
‫از‬ ‫استفاده‬ ‫با‬ ‫میتوانید‬ ‫هستید‬ ‫پروژه‬ ‫پوشه‬ ‫در‬ ‫گوناگون‬ ‫فایلهای‬
‫یک‬ ‫زیر‬ ‫فرمان‬diff‫کنید‬ ‫ایجاد‬:
 git diff
‫اعمال‬ ‫تغییرات‬ ‫تمامی‬ ‫از‬ ‫فهرستی‬ ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫از‬ ‫حاصل‬ ‫نتیجه‬
‫در‬ ‫نشده‬ ‫ثبت‬ ‫و‬ ‫شده‬stage‫میباشد‬.‫میخواهید‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫همچنین‬
‫در‬ ‫موجود‬ ‫تغییرات‬ ‫از‬ ‫کاملی‬ ‫اطالعات‬stage‫را‬‫بیاورید‬ ‫بدست‬
‫میتوانید‬diff‫مربوط‬‫به‬stage‫را‬‫زیر‬ ‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬
‫کنید‬ ‫ایجاد‬:
 git diff -cached
‫در‬ ‫پروژه‬ ‫تاریخچه‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬git status‫نمایش‬‫داده‬
‫نمیشود‬.‫از‬ ‫فهرستی‬ ‫نمایش‬ ‫برای‬snapshot‫از‬ ‫باید‬ ‫شده‬ ‫کامیت‬ ‫های‬
‫فرمان‬git log‫کنید‬ ‫استفاده‬.
8
‫کامیتها‬
‫کامیتها‬‫میباشند‬ ‫پروژه‬ ‫شده‬ ‫ذخیره‬ ‫نسخه‬ ‫هر‬ ‫نمایانگر‬.‫کامیت‬ ‫هر‬
‫بردارنده‬ ‫در‬snapshot، ‫تاریخ‬ ،‫کاربر‬ ‫اطالعات‬ ،‫پروژه‬ ‫کل‬ ‫از‬
‫یک‬ ‫و‬ ‫عنوان‬SHA-1 Chechsum‫میباشد‬ ‫کامیت‬ ‫محتوای‬ ‫تمام‬ ‫برای‬.‫به‬
‫مثال‬ ‫طور‬:
‫این‬checksum‫نقش‬Id‫کامیت‬‫در‬Git‫کامیتها‬ ‫این‬ ‫بنابر‬ ‫دارد‬ ‫را‬
‫بین‬ ‫از‬ ‫آنها‬ ‫داده‬ ‫یا‬ ‫و‬ ‫نمیکنند‬ ‫تغییر‬ ‫اتفاقی‬ ‫صورت‬ ‫به‬ ‫هیچوقت‬
‫اینکه‬ ‫بدون‬ ‫نمیرود‬git‫از‬‫باشد‬ ‫نداشته‬ ‫اطالع‬ ‫آن‬.
‫که‬ ‫آنجا‬ ‫از‬staging area‫در‬‫بردارنده‬‫تغییرات‬ ‫تمامی‬‫باشد‬‫می‬
‫داشت‬ ‫نخواهد‬ ‫پروژه‬ ‫پوشه‬ ‫بررسی‬ ‫به‬ ‫نیازی‬ ‫پروژه‬ ‫کردن‬ ‫کامیت‬.
9
‫کامیتها‬
‫کردن‬ ‫کامیت‬ ‫برای‬snapshot‫در‬stage‫و‬‫به‬ ‫تغییرات‬ ‫کردن‬ ‫اضافه‬
‫کنید‬ ‫استفاده‬ ‫زیر‬ ‫فرمان‬ ‫از‬ ‫پروژه‬ ‫تاریخچه‬:
 git commit
‫پس‬‫شما‬ ‫از‬ ‫و‬ ‫میشود‬ ‫باز‬ ‫متن‬ ‫ویرایشگر‬ ‫یک‬ ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫از‬
‫شد‬ ‫خواهد‬ ‫درخواست‬ ‫کامیت‬ ‫عنوان‬.‫کامیت‬ ‫توضیحات‬ ‫و‬ ‫عنوان‬ ‫فرم‬
‫باشد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫باید‬:
<commit summary in 50 characters or less. >
< blank line >
< detailed description of changes in this commit. >
git‫خروجی‬ ‫بندی‬ ‫قالب‬ ‫برای‬ ‫اول‬ ‫خط‬ ‫از‬log،‫و‬ ‫میل‬ ‫ارسال‬...
‫میکند‬ ‫استفاده‬.‫باشد‬ ‫خالصه‬ ‫و‬ ‫کوتاه‬ ‫است‬ ‫بهتر‬ ‫بنابراین‬.‫اگر‬
‫بدان‬ ‫این‬ ‫بنویسید‬ ‫را‬ ‫تغییرات‬ ‫کلیه‬ ‫خالصه‬ ‫صورت‬ ‫به‬ ‫که‬ ‫نتوانستید‬
‫که‬ ‫است‬ ‫معنی‬commit‫در‬‫باید‬ ‫و‬ ‫هست‬ ‫نامرتبط‬ ‫تغییرات‬ ‫بردارنده‬
‫یک‬ ‫قالب‬ ‫در‬ ‫و‬ ‫کنید‬ ‫بندی‬ ‫گروه‬ ‫را‬ ‫یکدیگر‬ ‫با‬ ‫مرتبط‬ ‫تغییرات‬
‫کنید‬ ‫ثبت‬ ‫را‬ ‫گروه‬ ‫هر‬ ‫کامیت‬.‫خالی‬ ‫خط‬ ‫یک‬ ‫کامیت‬ ‫خالصه‬ ‫از‬ ‫بعد‬
‫و‬ ‫تغییرات‬ ‫اعمال‬ ‫دالیل‬ ‫مانند‬ ‫تغییرات‬ ‫جزئیات‬ ‫سپس‬ ‫و‬ ‫بگذارید‬
10
‫کامیتها‬
‫به‬ ‫مربوط‬ ‫فرمانهای‬stage‫و‬‫پروژه‬ ‫پوشه‬:git add, git rm, git status
‫کامیتها‬ ‫تاریخچه‬ ‫به‬ ‫مربوط‬ ‫فرمانهای‬:git commit, git log
11
‫کامیتها‬ ‫به‬ ‫برچسب‬ ‫الصاق‬
‫یا‬ ‫برچسبها‬ ‫از‬Tag‫ایجاد‬ ‫برای‬ ‫ها‬‫گر‬‫اشاره‬‫خاص‬ ‫کامیتهای‬ ‫به‬
‫های‬ ‫پروژه‬ ‫در‬ ‫عموم‬ ‫برای‬ ‫پروژه‬ ‫انتشار‬ ‫کامیت‬ ‫مانند‬open source
‫میتوان‬‫کرد‬ ‫استفاده‬.‫از‬ ‫کامیتها‬ ‫به‬ ‫برچسب‬ ‫الصاق‬ ‫برای‬‫فرمان‬git
tag‫به‬‫میشود‬ ‫استفاده‬ ‫زیر‬ ‫صورت‬:
 git tag -a v1.0 -m "Stable release"
‫سویچ‬-a‫کند‬ ‫ایجاد‬ ‫پیغام‬ ‫با‬ ‫برچسب‬ ‫یک‬ ‫که‬ ‫میدهد‬ ‫فرمان‬ ‫گیت‬ ‫به‬
‫سویچ‬ ‫با‬ ‫پیغام‬ ‫که‬-m‫مشخص‬‫میشود‬.‫سویچ‬ ‫بدون‬ ‫باال‬ ‫فرمان‬ ‫اجرای‬
‫میدهد‬ ‫ارائه‬ ‫را‬ ‫موجود‬ ‫های‬ ‫تگ‬ ‫از‬ ‫فهرستی‬ ‫ها‬:
 git tag
12
‫پوشه‬ ‫در‬ ‫تغییرات‬ ‫بازگرداندن‬
‫پروژه‬
‫از‬‫شما‬ ‫هستند‬ ‫بازگشت‬ ‫قابل‬ ‫شما‬ ‫پروژه‬ ‫از‬ ‫نسخه‬ ‫هر‬ ‫که‬ ‫آنجا‬
‫اقدام‬ ‫کنید‬ ‫وارد‬ ‫آسیبی‬ ‫پروژه‬ ‫به‬ ‫اینکه‬ ‫بدون‬ ‫آزادانه‬ ‫میتوانید‬
‫نمایید‬ ‫پروژه‬ ‫روی‬ ‫بر‬ ‫جدید‬ ‫قابلیتهای‬ ‫آزمایش‬ ‫و‬ ‫تحقیق‬ ‫به‬.‫اما‬
‫روی‬ ‫بر‬ ‫گوناگون‬ ‫تکنیکهای‬ ‫آزمایش‬ ً‫صرفا‬ ‫و‬ ‫هدف‬ ‫بدون‬ ‫نویسی‬ ‫کد‬
‫و‬ ‫نامنظم‬ ‫کدهای‬ ‫با‬ ‫پروژه‬ ‫پوشه‬ ‫شدن‬ ‫شلوغ‬ ‫به‬ ‫منجر‬ ‫میتواند‬ ‫پروژه‬
‫شود‬ ‫نامرتبط‬.‫میتوانید‬ ‫آمد‬ ‫پیش‬ ‫شما‬ ‫برای‬ ‫مشکل‬ ‫این‬ ‫که‬ ‫زمانی‬
‫کنید‬ ‫اجرا‬ ‫را‬ ‫زیر‬ ‫فرمانهای‬:
 git reset --hard HEAD
 git clean -f
‫به‬ ‫شما‬ ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫با‬Git‫فرمان‬‫پوشه‬ ‫محتویات‬ ‫که‬ ‫میدهید‬
‫به‬ ‫که‬ ‫کامیت‬ ‫آخرین‬ ‫از‬ ‫پس‬ ‫که‬ ‫حالتی‬ ‫به‬ ‫را‬ ‫پروژه‬‫آن‬HEAD‫نیز‬
‫برگرداند‬ ‫میشود‬ ‫گفته‬.‫را‬ ‫نشده‬ ‫کامیت‬ ‫تغییرات‬ ‫تمامی‬ ‫فرمان‬ ‫این‬
‫ردگیری‬ ‫دیگر‬ ‫را‬ ‫نشده‬ ‫کامیت‬ ‫اما‬ ‫جدید‬ ‫فایلهای‬ ‫و‬ ‫میکند‬ ‫حذف‬
‫کند‬‫نمی‬.‫دوم‬ ‫فرمان‬ ‫نمیشوند‬ ‫ردگیری‬ ‫دیگر‬ ‫که‬ ‫فایلهایی‬ ‫حذف‬ ‫برای‬
‫میکنیم‬ ‫اجرا‬ ‫را‬.‫که‬ ‫آنجا‬ ‫از‬Git‫خیلی‬‫حذف‬ ‫به‬ ‫اقدام‬ ‫احتیاط‬ ‫با‬
13
‫خاص‬ ‫فایل‬ ‫یک‬ ‫بازگرداندن‬
‫امکان‬‫به‬ ‫آن‬ ‫وضعیت‬ ‫برگرداندن‬ ‫و‬ ‫خاص‬ ‫فایل‬ ‫یک‬ ‫دادن‬ ‫قرار‬ ‫هدف‬
‫کامیت‬ ‫آخرین‬‫ثبت‬‫در‬ ‫نیز‬ ‫شده‬Git‫باشد‬‫می‬ ‫موجود‬‫است‬ ‫کافی‬ ‫تنها‬
‫کنید‬ ‫اجرا‬ ‫را‬ ‫زیر‬ ‫فرمان‬ ‫که‬:
 git checkout HEAD < file >
‫شما‬ ‫و‬ ‫داشت‬ ‫نخواهد‬ ‫پروژه‬ ‫تاریخچه‬ ‫روی‬ ‫بر‬ ‫تاثیری‬ ‫فرمان‬ ‫این‬
‫به‬ ‫میتوانید‬‫جای‬HEAD‫از‬‫برای‬ ‫تگ‬ ‫یا‬ ‫و‬ ‫شاخه‬ ،‫کامیت‬ ‫شناسه‬
‫استفاده‬ ‫کامیت‬ ‫آن‬ ‫به‬ ‫فایل‬ ‫برگرداندن‬ ‫و‬ ‫نظر‬ ‫مورد‬ ‫کامیت‬ ‫شناسایی‬
‫کنید‬.
14
‫در‬ ‫تغییرات‬ ‫بازگرداندن‬Stage
‫اگر‬‫در‬ ‫خود‬ ‫آینده‬ ‫کامیت‬ ‫کردن‬ ‫تنظیم‬ ‫حین‬ ‫در‬Stage‫به‬‫یک‬ ‫اشتباه‬
‫زیر‬ ‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫میتوانید‬ ‫دادید‬ ‫قرار‬ ‫را‬ ‫اضافه‬ ‫فایل‬
‫از‬ ‫را‬ ‫آن‬Stage‫کنید‬ ‫خارج‬:
 git reset HEAD < file >
‫از‬ ‫فرمان‬ ‫این‬ ‫در‬ ‫میکنید‬ ‫مالحظه‬ ‫که‬ ‫همانطور‬--hard‫استفاده‬‫نشده‬
‫به‬ ‫این‬ ‫که‬ ‫است‬Git‫فرمان‬‫نداشته‬ ‫پروژه‬ ‫پوشه‬ ‫با‬ ‫کاری‬ ‫که‬ ‫میدهد‬
‫از‬ ‫را‬ ‫فایل‬ ‫تنها‬ ‫و‬ ‫باشد‬Stage‫خارج‬‫کند‬.‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬
‫سوئیچ‬--hard‫تغییرات‬‫در‬ ‫هم‬ ‫را‬Stage‫و‬‫پروژه‬ ‫پوشه‬ ‫در‬ ‫هم‬
‫برمیگرداند‬.
15
‫ها‬ ‫کامیت‬ ‫بازگرداندن‬
‫به‬‫خنثی‬ ‫را‬ ‫کامیت‬ ‫یک‬ ‫از‬ ‫حاصل‬ ‫تغییرات‬ ‫میتوانید‬ ‫شما‬ ‫صورت‬ ‫دو‬
‫کنید‬.‫یک‬ ‫ایجاد‬ ‫با‬ ‫دوم‬ ‫و‬ ‫پروژه‬ ‫تارخچه‬ ‫از‬ ‫کامیت‬ ‫حذف‬ ‫با‬ ‫اول‬
‫میکند‬ ‫خنثی‬ ‫را‬ ‫قبلی‬ ‫کامیت‬ ‫تغییرات‬ ‫که‬ ‫جدید‬ ‫کامیت‬.‫دوم‬ ‫روش‬ ‫که‬
‫میباشد‬ ‫شده‬ ‫توصیه‬ ‫روش‬.
‫حذف‬‫کامیت‬
‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬reset‫به‬ ‫را‬ ‫کامیت‬ ‫آخرین‬ ‫میتوانید‬ ‫شما‬
‫کنید‬ ‫حذف‬ ‫زیر‬ ‫صورت‬:
 git reset HEAD~1
HEAD~1‫مشخص‬‫کامیت‬ ‫آخرین‬ ‫از‬ ‫قبل‬ ‫کامیت‬ ‫اولین‬ ‫به‬ ‫که‬ ‫میکند‬
‫شد‬ ‫خواهد‬ ‫برگشت‬.‫کامیت‬ ‫فرمان‬ ‫این‬ ‫لذا‬HEAD‫را‬‫کرد‬ ‫خواهد‬ ‫حذف‬.
HEAD~2‫کامیت‬‫خواهد‬ ‫حذف‬ ‫را‬ ‫آخر‬ ‫به‬ ‫مانده‬ ‫یکی‬ ‫کامیت‬ ‫و‬ ‫آخر‬
‫کرد‬.‫دستور‬ ‫اجرای‬ ‫با‬reset‫شما‬‫تاریخچه‬ ‫در‬ ‫کامیت‬ ‫چند‬ ‫یا‬ ‫یک‬
‫گشت‬ ‫خواهید‬ ‫باز‬ ‫عقب‬ ‫به‬ ‫پروژه‬. 16
‫کننده‬ ‫خنثی‬ ‫کامیت‬ ‫ایجاد‬
‫برای‬‫از‬ ‫ناشی‬ ‫مشکالت‬ ‫از‬ ‫جلوگیری‬reset‫کردن‬‫است‬ ‫بهتر‬ ‫کامیت‬ ‫یک‬
‫از‬ ‫باید‬ ‫منظور‬ ‫این‬ ‫برای‬ ‫که‬ ‫کنید‬ ‫ایجاد‬ ‫کننده‬ ‫خنثی‬ ‫کامیت‬ ‫یک‬ ‫که‬
‫کنیم‬ ‫استفاده‬ ‫زیر‬ ‫فرمان‬:
 git revert < commit-id >
‫ایجاد‬ ‫آنرا‬ ‫عکس‬ ‫و‬ ‫میکند‬ ‫بررسی‬ ‫را‬ ‫شده‬ ‫مشخص‬ ‫کامیت‬ ‫فرمان‬ ‫این‬
‫میکند‬.‫برای‬Git‫عادی‬ ‫کامیت‬ ‫یک‬ ‫این‬ ‫نویسان‬ ‫برنامه‬ ‫دیگر‬ ‫و‬
‫برمیگرداند‬ ‫را‬ ‫شده‬ ‫مشخص‬ ‫کامیت‬ ‫در‬ ‫موجود‬ ‫تغییرات‬ ‫فقط‬ ‫میباشد‬.
17
‫کامیتها‬ ‫اصالح‬
‫شما‬‫با‬ ‫را‬ ‫آنها‬ ‫میتوانید‬ ‫کامیتها‬ ‫برگرداندن‬ ‫یا‬ ‫و‬ ‫حذف‬ ‫بر‬ ‫عالوه‬
‫کنید‬ ‫اصالح‬ ‫زیر‬ ‫فرمان‬ ‫از‬ ‫استفاده‬.‫را‬ ‫فایل‬ ‫چند‬ ‫یا‬ ‫یک‬ ‫اگر‬ ً‫مثال‬
‫این‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫کنید‬ ‫اضافه‬ ‫کامیت‬ ‫یک‬ ‫به‬ ‫که‬ ‫اید‬ ‫کرده‬ ‫فراموش‬
‫کنید‬ ‫اضافه‬ ‫کامیت‬ ‫به‬ ‫را‬ ‫آنها‬ ‫میتوانید‬ ‫فرمان‬.‫داشته‬ ‫توجه‬
‫خواهد‬ ‫پروژه‬ ‫تاریخچه‬ ‫در‬ ‫تغییرات‬ ‫باعث‬ ‫نیز‬ ‫فرمان‬ ‫این‬ ‫که‬ ‫باشید‬
‫شد‬.
 git commit –amend
‫کامیت‬ ‫به‬ ‫را‬ ‫جدید‬ ‫تغییرات‬ ‫جدید‬ ‫کامیت‬ ‫یک‬ ‫ثبت‬ ‫جای‬ ‫به‬ ‫فرمان‬ ‫این‬
‫میکند‬ ‫اضافه‬ ‫قبلی‬.
18
‫ها‬‫شاخه‬
‫میکنند‬ ‫برابر‬ ‫چند‬ ‫را‬ ‫کامیتها‬ ‫در‬ ‫شده‬ ‫ارائه‬ ‫قابلیتهای‬ ‫ها‬ ‫شاخه‬.
‫را‬ ‫پروژه‬ ‫تاریخچه‬ ‫آنها‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫میتوانند‬ ‫نویسان‬ ‫برنامه‬
fork‫کنند‬‫به‬ ‫پروژه‬ ‫اصلی‬ ‫شاخه‬ ‫از‬ ‫جدا‬ ‫کامال‬ ‫جدید‬ ‫شاخه‬ ‫یک‬ ‫و‬
‫محدوده‬ ،‫پروژه‬ ‫پوشه‬ ‫همراه‬stage‫و‬‫ایجاد‬ ‫مجزا‬ ‫پروژه‬ ‫تاریخچه‬
‫کنند‬.
‫بدون‬ ‫خاطر‬ ‫آسودگی‬ ‫با‬ ‫نویسان‬ ‫برنامه‬ ‫زدن‬ ‫شاخه‬ ‫از‬ ‫استفاده‬ ‫با‬
‫گوناگون‬ ‫های‬ ‫نسخه‬ ‫روی‬ ‫بر‬ ‫میتوانند‬ ‫اصلی‬ ‫پروژه‬ ‫به‬ ‫رساندن‬ ‫آسیب‬
‫کار‬ ‫پروژه‬ ‫گوناگون‬ ‫قابلیتهای‬ ‫روی‬ ‫بر‬ ‫موازی‬ ‫صورت‬ ‫به‬ ‫پروژه‬
‫کنند‬.‫قابلیت‬Fork‫و‬‫گوناگون‬ ‫بخشهای‬ ‫روی‬ ‫بر‬ ‫موازی‬ ‫صورت‬ ‫به‬ ‫کار‬
‫در‬ ‫تیمی‬ ‫کار‬ ‫قابلیتهای‬ ‫از‬ ‫مهمی‬ ‫بخش‬ ‫پروژه‬GIT‫میباشد‬.
‫در‬ ‫ها‬ ‫شاخه‬ ‫با‬ ‫مرتبط‬ ‫عملیات‬ ‫کلیه‬Git‫در‬‫خالصه‬ ‫فرمان‬ ‫چند‬
‫میشوند‬.‫فرمان‬ ‫مثال‬ ‫طور‬ ‫به‬git branch‫برای‬‫و‬ ‫ایجاد‬ ،‫گیری‬ ‫فهرست‬
‫میشود‬ ‫استفاده‬ ‫ها‬ ‫شاخه‬ ‫حذف‬ ‫یا‬.
‫شاخه‬ ‫کردن‬ ‫فهرست‬‫ها‬
‫زیر‬ ‫فرمان‬ ‫از‬ ‫پروژه‬ ‫در‬ ‫موجود‬ ‫های‬ ‫شاخه‬ ‫فهرست‬ ‫مشاهده‬ ‫برای‬
19
‫ها‬‫شاخه‬
‫ارائه‬ ‫را‬ ‫پروژه‬ ‫در‬ ‫موجود‬ ‫های‬ ‫شاخه‬ ‫کلیه‬ ‫فهرست‬ ‫فرمان‬ ‫این‬ ‫خروجی‬
‫حاضر‬ ‫حال‬ ‫در‬ ‫که‬ ‫ای‬ ‫شاخه‬ ‫کنار‬ ‫در‬ ‫همچنین‬ ‫و‬ ‫میدهد‬checked out
‫شده‬‫میدهد‬ ‫قرار‬ ‫ستاره‬ ‫یک‬ ‫است‬.‫با‬ ‫رابطه‬ ‫در‬checked out‫در‬
‫داد‬ ‫خواهیم‬ ‫توضیح‬ ‫ادامه‬.
*master
some-feature
quick-bug-fix
‫شاخه‬master‫شاخه‬‫در‬ ‫اصلی‬ ‫و‬ ‫فرض‬ ‫پیش‬Git‫میباشد‬‫اولین‬ ‫با‬ ‫که‬
‫هر‬ ‫در‬ ‫کامیت‬repository‫ایجاد‬‫میشود‬.‫این‬ ‫از‬ ‫نویسان‬ ‫برنامه‬ ‫اکثر‬
‫شاخه‬ ‫تمامی‬ ‫که‬ ‫میکنند‬ ‫یاد‬ ‫پروژه‬ ‫تولید‬ ‫اصلی‬ ‫خط‬ ‫عنوان‬ ‫به‬ ‫شاخه‬
‫میگیرند‬ ‫ریشه‬ ‫شاخه‬ ‫این‬ ‫از‬ ‫دیگر‬ ‫های‬.
20
‫شاخه‬ ‫ایجاد‬
‫برای‬‫فرمان‬ ‫همان‬ ‫از‬ ‫جدید‬ ‫شاخه‬ ‫ساخت‬git branch‫استفاده‬‫با‬ ‫میشود‬
‫پاس‬ ‫فرمان‬ ‫به‬ ‫را‬ ‫شاخه‬ ‫نام‬ ‫آرگومان‬ ‫بار‬ ‫این‬ ‫که‬ ‫تفاوت‬ ‫این‬
‫شود‬ ‫ساخته‬ ‫جدید‬ ‫شاخه‬ ‫تا‬ ‫میدهیم‬:
 git branch < name >
‫یا‬ ‫گر‬ ‫اشاره‬ ‫یک‬ ‫فرمان‬ ‫این‬ ‫اجرای‬pointer‫جدید‬‫کامیت‬ ‫به‬HEAD
‫ایجاد‬‫شاخه‬ ‫در‬ ‫همچنان‬ ‫شما‬ ‫و‬ ‫نمیکند‬ ‫سویچ‬ ‫آن‬ ‫روی‬ ‫بر‬ ‫اما‬ ‫میکند‬
master‫هستید‬.‫فرمان‬ ‫از‬ ‫باید‬ ‫شما‬ ‫جدید‬ ‫شاخه‬ ‫روی‬ ‫بر‬ ‫سویچ‬ ‫برای‬
git checkout‫استفاده‬‫کنید‬.‫جدید‬ ‫شاخه‬ ‫ایجاد‬ ‫از‬ ‫بعد‬ ‫بالفاصله‬
repository‫شما‬‫آید‬ ‫می‬ ‫در‬ ‫زیر‬ ‫صورت‬ ‫به‬.
21
‫شاخه‬ ‫ایجاد‬
‫یا‬ ‫اصلی‬ ‫شاخه‬ ‫میکنید‬ ‫مالحظه‬ ‫که‬ ‫همانطور‬master‫و‬‫شاخه‬ ‫همچنین‬
‫میکنند‬ ‫اشاره‬ ‫کامیت‬ ‫یک‬ ‫به‬ ‫دو‬ ‫هر‬ ‫کردید‬ ‫ایجاد‬ ‫که‬ ‫جدیدی‬.‫هر‬ ‫اما‬
‫اصلی‬ ‫شاخه‬ ‫از‬ ‫کنید‬ ‫ثبت‬ ‫جدید‬ ‫شاخه‬ ‫این‬ ‫در‬ ‫شما‬ ‫که‬ ‫جدیدی‬ ‫کامیت‬
‫بود‬ ‫خواهد‬ ‫جدا‬.‫کار‬ ‫بنیان‬ ‫شد‬ ‫اشاره‬ ‫که‬ ‫همانطور‬ ‫امر‬ ‫همین‬ ‫که‬
‫در‬ ‫تیمی‬Git‫میباشد‬‫بر‬ ‫اینکه‬ ‫بدون‬ ‫میتوانید‬ ‫شما‬ ‫که‬ ‫طوری‬ ‫به‬
‫صورت‬ ‫به‬ ‫باشید‬ ‫داشته‬ ‫تاثیری‬ ‫پروژه‬ ‫اصلی‬ ‫سازی‬ ‫پیاده‬ ‫روند‬
‫کنید‬ ‫کار‬ ‫پروژه‬ ‫مجزا‬ ‫قابلیتهای‬ ‫دیگر‬ ‫روی‬ ‫بر‬ ‫جداگانه‬.‫طور‬ ‫به‬
‫شاخه‬ ‫در‬ ‫شما‬ ‫اگر‬ ‫مثال‬some-feature‫کار‬‫جدید‬ ‫کامیت‬ ‫یک‬ ‫و‬ ‫میکنید‬
‫کنید‬ ‫ثبت‬‫تاریخچه‬‫میشود‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫پروژه‬:
‫کامیت‬HEAD‫ایجاد‬‫است‬ ‫شده‬ ‫مشخص‬ ‫قرمز‬ ‫رنگ‬ ‫با‬ ‫تصویر‬ ‫در‬ ‫که‬ ‫شده‬
‫در‬ ‫کامیت‬ ‫این‬ ‫و‬ ‫میباشد‬ ‫شاخه‬ ‫در‬ ‫کامیت‬ ‫آخرین‬log‫مربوط‬‫شاخه‬ ‫به‬
master‫که‬ ‫صورتی‬ ‫در‬ ‫همچنین‬ ‫شد‬ ‫نخواهد‬ ‫ظاهر‬‫شاخه‬master‫را‬‫شما‬
check out‫کنید‬‫ایجاد‬ ‫فرعی‬ ‫شاخه‬ ‫پروژه‬ ‫پوشه‬ ‫در‬ ‫که‬ ‫تغییراتی‬
‫پروژه‬ ‫پوشه‬ ‫در‬ ‫اید‬ ‫کرده‬master‫ظاهر‬‫شد‬ ‫نخواهند‬.
22
‫ها‬ ‫شاخه‬ ‫حذف‬
‫شما‬‫سویچ‬ ‫از‬ ‫استفاده‬ ‫با‬-d‫در‬‫فرمان‬git branch‫و‬‫با‬ ‫همچنین‬
‫کنید‬ ‫حذف‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫شاخه‬ ‫میتوانید‬ ‫شاخه‬ ‫نام‬ ‫ارائه‬:
 git branch -d <name>
‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬Git‫اجازه‬‫اصلی‬ ‫شاخه‬ ‫با‬ ‫که‬ ‫هایی‬ ‫شاخه‬ ‫حذف‬
merge‫نشده‬‫نمیدهد‬ ‫را‬ ‫اند‬.‫انجام‬ ‫کارهای‬ ‫حفظ‬ ‫سبب‬ ‫به‬ ‫این‬ ‫و‬
‫میباشد‬ ‫پروژه‬ ‫روی‬ ‫بر‬ ‫شده‬.‫اینکه‬ ‫برای‬Git‫را‬‫حذف‬ ‫به‬ ‫مجبور‬
‫های‬ ‫شاخه‬merge‫نشده‬‫سویچ‬ ‫از‬ ‫باید‬ ‫کنید‬-D‫بجای‬-d‫استفاده‬
‫کنیم‬.
 git branch -D <name>
‫شاخه‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫دقت‬ ‫فرمان‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫در‬merge‫نشده‬
‫شد‬ ‫خواهد‬ ‫حذف‬.
23
Check out‫کردن‬‫ها‬ ‫شاخه‬
ً‫مطمئنا‬‫بی‬ ‫آنها‬ ‫بین‬ ‫کردن‬ ‫سویچ‬ ‫قابلیت‬ ‫بدون‬ ‫ها‬ ‫شاخه‬ ‫ایجاد‬
‫بود‬ ‫خواهد‬ ‫فایده‬.‫فرمان‬ ‫از‬ ‫مختلف‬ ‫های‬ ‫شاخه‬ ‫بین‬ ‫کردن‬ ‫سویچ‬ ‫برای‬
check out‫به‬‫میشود‬ ‫استفاده‬ ‫زیر‬ ‫صورت‬:
 git checkout <branch>
‫به‬ ‫توجه‬ ‫با‬ ‫پروژه‬ ‫پوشه‬ ‫جدید‬ ‫شاخه‬ ‫روی‬ ‫کردن‬ ‫سویچ‬ ‫از‬ ‫بعد‬
‫میشود‬ ‫رسانی‬ ‫روز‬ ‫به‬ ‫جاری‬ ‫شاخه‬ ‫کامیتهای‬.‫همچنین‬HEAD‫نیز‬‫به‬
‫در‬ ‫آینده‬ ‫در‬ ‫که‬ ‫کامیتهایی‬ ‫تمامی‬ ‫و‬ ‫کرد‬ ‫خواهد‬ ‫اشاره‬ ‫جدید‬ ‫شاخه‬
‫در‬ ‫و‬ ‫میشوند‬ ‫ثبت‬ ‫شاخه‬ ‫همان‬ ‫در‬ ‫تنها‬ ‫میشوند‬ ‫ثبت‬ ‫جاری‬ ‫شاخه‬
‫هستند‬ ‫دسترس‬.‫کردن‬ ‫سویچ‬ ‫به‬ ‫را‬ ‫ها‬ ‫شاخه‬ ‫بین‬ ‫کردن‬ ‫سویچ‬ ‫میتوان‬
‫حالت‬ ‫به‬ ‫برگشتن‬ ‫که‬ ‫تفاوت‬ ‫این‬ ‫با‬ ‫کرد‬ ‫تشبیه‬ ‫مختلف‬ ‫های‬ ‫پوشه‬ ‫بین‬
‫بود‬ ‫خواهد‬ ‫تر‬ ‫ساده‬ ‫بسیار‬ ‫اولیه‬.
24
Check out‫کردن‬‫ها‬ ‫شاخه‬
‫تمامی‬ ‫ثبت‬ ‫از‬ ‫جدید‬ ‫شاخه‬ ‫ایجاد‬ ‫از‬ ‫قبل‬ ‫همیشه‬ ‫که‬ ‫میشود‬ ‫توصیه‬
‫باز‬ ‫امکان‬ ‫صورت‬ ‫این‬ ‫غیر‬ ‫در‬ ‫شویم‬ ‫مطمئن‬ ‫اصلی‬ ‫شاخه‬ ‫در‬ ‫تغییرات‬
‫یا‬ ‫تغییرات‬ ‫نویسی‬overwrite‫تغییرات‬‫اجرای‬ ‫حین‬git checkout
‫میباشد‬.
‫کد‬ ‫و‬ ‫تحقیق‬ ‫به‬ ‫میتوانید‬ ‫آزادانه‬ ‫شما‬ ‫جدید‬ ‫شاخه‬ ‫ایجاد‬ ‫از‬ ‫بعد‬
‫آنجا‬ ‫از‬ ‫همچنین‬ ‫بپردازید‬ ‫پروژه‬ ‫جدید‬ ‫قابلیتهای‬ ‫روی‬ ‫بر‬ ‫نویسی‬
‫روند‬ ‫میتوانید‬ ‫شما‬ ‫دارد‬ ‫را‬ ‫خود‬ ‫به‬ ‫منحصر‬ ‫تاریخچه‬ ‫شاخه‬ ‫هر‬ ‫که‬
‫با‬ ‫را‬ ‫شاخه‬ ‫سازی‬ ‫پیاده‬‫دستورات‬git add‫و‬git commit‫مورد‬ ً‫قبال‬ ‫که‬
‫ثبت‬ ‫اصلی‬ ‫شاخه‬ ‫روی‬ ‫بر‬ ‫تاثیر‬ ‫بدون‬ ‫را‬ ،‫اند‬ ‫گرفته‬ ‫قرار‬ ‫بررسی‬
‫کنید‬.
25
‫ها‬‫شاخه‬ ‫کردن‬ ‫ترکیب‬
‫ها‬ ‫شاخه‬ ‫ترکیب‬ ‫دیگر‬ ‫شاخه‬ ‫با‬ ‫شاخه‬ ‫یک‬ ‫کامیتهای‬ ‫ترکیب‬ ‫فرآیند‬ ‫به‬
‫یا‬merge‫گفته‬‫میشود‬.‫وجود‬ ‫ها‬ ‫شاخه‬ ‫ترکیب‬ ‫برای‬ ‫بسیاری‬ ‫های‬ ‫راه‬
‫های‬ ‫شاخه‬ ‫بین‬ ‫اطالعات‬ ‫گذاری‬ ‫اشتراک‬ ‫به‬ ‫آنها‬ ‫همه‬ ‫هدف‬ ‫اما‬ ‫دارند‬
‫میباشد‬ ‫گوناگون‬.‫مهمترین‬ ‫از‬ ‫یکی‬ ‫ها‬ ‫شاخه‬ ‫ترکیب‬ ‫دلیل‬ ‫همین‬ ‫به‬ ‫که‬
‫قابلیتهای‬Git‫میباشد‬.
‫نامهای‬ ‫با‬ ‫دارند‬ ‫وجود‬ ‫های‬ ‫شاخه‬ ‫ترکیب‬ ‫برای‬ ‫رایج‬ ‫روش‬ ‫دو‬:
Fast-Forward merge‫و‬3-Way merge
‫در‬‫فرمان‬ ‫از‬ ‫روشها‬ ‫این‬ ‫دو‬ ‫هر‬git merge‫استفاده‬‫میشود‬.‫متد‬ ‫اما‬
‫ساختار‬ ‫روی‬ ‫از‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫ها‬ ‫شاخه‬ ‫ترکیب‬ ‫برای‬ ‫استفاده‬ ‫مورد‬
‫شد‬ ‫خواهد‬ ‫تعیین‬ ‫آن‬ ‫های‬ ‫شاخه‬ ‫و‬ ‫پروژه‬ ‫تاریخچه‬.‫شاخه‬ ‫روش‬ ‫دو‬ ‫هر‬ ‫در‬
‫شود‬ ‫الصاق‬ ‫هدف‬ ‫یا‬ ‫اصلی‬ ‫شاخه‬ ‫به‬ ‫است‬ ‫قرار‬ ‫که‬ ‫فرعی‬‫باید‬checked out
‫شده‬‫ماند‬ ‫خواهد‬ ‫باقی‬ ‫تغییر‬ ‫بدون‬ ‫اصلی‬ ‫شاخه‬ ‫و‬ ‫باشد‬.‫به‬ ‫ادامه‬ ‫در‬
‫زیر‬ ‫فرمان‬ ‫با‬ ‫ها‬ ‫شاخه‬ ‫ترکیب‬ ‫برای‬ ‫موجود‬ ‫سناریو‬ ‫دو‬ ‫بررسی‬
‫میپردازیم‬:
 git checkout master - git merge some-feature
‫شاخه‬ ‫که‬ ‫میشود‬ ‫باعث‬ ‫باال‬ ‫فرمان‬ ‫دو‬ ‫اجرای‬ ‫شد‬ ‫اشاره‬ ‫که‬ ‫همانطور‬
some-feature‫به‬‫اصلی‬ ‫شاخه‬‫یا‬master‫اضافه‬‫شود‬.‫شما‬ ‫اوقات‬ ‫بیشتر‬
26
Fast-Forward Merge
‫ایجاد‬ ‫جدید‬ ‫شاخه‬ ‫یک‬ ‫ما‬ ‫سناریو‬ ‫این‬ ‫در‬
‫پروژه‬ ‫به‬ ‫جدید‬ ‫قابلیت‬ ‫یک‬ ‫تا‬ ‫ایم‬ ‫کرده‬
‫شاخه‬ ‫این‬ ‫در‬ ‫کامیت‬ ‫دو‬ ‫و‬ ‫کنیم‬ ‫اضافه‬
‫که‬ ‫ایم‬ ‫آماده‬ ‫االن‬ ‫و‬ ‫ایم‬ ‫کرده‬ ‫ثبت‬ ‫جدید‬
‫اصلی‬ ‫شاخه‬ ‫به‬ ‫شده‬ ‫نویسی‬ ‫کد‬ ‫جدید‬ ‫قابلیت‬
‫شود‬ ‫اضافه‬ ‫پروژه‬.‫دو‬ ‫اینکه‬ ‫جای‬ ‫به‬
‫اصلی‬ ‫شاخه‬ ‫در‬ ‫دوباره‬ ‫را‬ ‫شاخه‬ ‫کامیت‬
‫شوند‬ ‫ایجاد‬Git‫شاخه‬ ‫گر‬ ‫اشاره‬master‫را‬
‫ابتدای‬ ‫به‬‫شاخه‬some-feature‫میبرد‬.
‫شود‬ ‫ایجاد‬ ‫ذهن‬ ‫در‬ ‫سوال‬ ‫این‬ ‫شاید‬
‫شاخه‬ ‫کامیت‬ ‫دو‬ ‫اول‬ ‫از‬ ‫چرا‬ ‫که‬
‫ثبت‬ ‫اصلی‬ ‫شاخه‬ ‫در‬ ‫را‬ ‫فرعی‬
‫ایجاد‬ ‫با‬ ‫که‬ ‫هست‬ ‫این‬ ‫علت‬ ‫نکردیم؟‬
‫برای‬ ‫امن‬ ‫محیط‬ ‫یک‬ ‫شما‬ ‫جدید‬ ‫شاخه‬
‫جدید‬ ‫قابلیتهای‬ ‫نویسی‬ ‫کد‬ ‫توسعه‬
‫اگر‬ ‫که‬ ‫اید‬ ‫کرده‬ ‫ایجاد‬ ‫پروژه‬
‫نیازی‬ ‫نرسند‬ ‫نتیجه‬ ‫به‬ ‫شما‬ ‫تالشهای‬
‫عقب‬ ‫به‬ ‫را‬ ‫پروژه‬ ‫کل‬ ‫که‬ ‫نیست‬
‫که‬ ‫است‬ ‫کافی‬ ‫تنها‬ ‫و‬ ‫برگردانید‬
‫و‬ ‫ناتمام‬ ‫کدهای‬ ‫حاوی‬ ‫جدید‬ ‫شاخه‬
‫کنید‬ ‫پاک‬ ‫را‬ ‫اشتباه‬.
27
3-Way Merge
‫همیشه‬‫نیستند‬ ‫قبل‬ ‫مثال‬ ‫سادگی‬ ‫به‬ ‫ترکیبها‬.‫باشید‬ ‫داشته‬ ‫یاد‬ ‫به‬
‫در‬ ‫ها‬ ‫شاخه‬ ‫اصلی‬ ‫مزیت‬ ‫که‬Git‫قابلیت‬‫بخشهای‬ ‫نویسی‬ ‫کد‬ ‫و‬ ‫توسعه‬
‫میباشد‬ ‫موازی‬ ‫صورت‬ ‫به‬ ‫پروژه‬ ‫مختلف‬.‫اوقات‬ ‫بیشتر‬ ‫خاطر‬ ‫همین‬ ‫به‬
‫میکنیم‬ ‫برخورد‬ ‫زیر‬ ‫سناریوی‬ ‫به‬
‫مانند‬ ‫سناریو‬ ‫این‬‫سناریو‬Fast-
Forward‫شروع‬‫حین‬ ‫در‬ ‫اما‬ ‫شد‬
‫چند‬ ‫یا‬ ‫یک‬ ‫فرعی‬ ‫شاخه‬ ‫تکمیل‬
‫اصلی‬ ‫شاخه‬ ‫به‬ ‫جدید‬ ‫کامیت‬
‫است‬ ‫شده‬ ‫اضافه‬.‫چنین‬ ‫در‬
‫فرعی‬ ‫شاخه‬ ‫ترکیب‬ ‫عمل‬ ‫موقعیتی‬
‫طرفه‬ ‫سه‬ ‫ترکیب‬ ‫را‬ ‫اصلی‬ ‫با‬
‫دستورات‬ ‫همان‬ ‫با‬ ‫که‬ ‫مینامند‬
‫ترکیب‬Fast-Forward‫پیاده‬‫سازی‬
‫میشود‬.
‫ه‬‫مانطور‬‫میکنید‬ ‫مشاهده‬ ‫تصویر‬ ‫در‬ ‫که‬
Git‫نمیتواند‬‫روش‬ ‫از‬Fast-Forward‫به‬
‫اصلی‬ ‫شاخه‬ ‫در‬ ‫شده‬ ‫ثبت‬ ‫کامیت‬ ‫دلیل‬
‫استفاده‬ ‫فرعی‬ ‫شاخه‬ ‫ایجاد‬ ‫از‬ ‫بعد‬
‫کند‬.‫لذا‬Git‫یک‬‫جدید‬ ‫ترکیبی‬ ‫کامیت‬
‫در‬ ‫که‬‫بردارنده‬snapshot‫از‬‫دو‬ ‫هر‬
‫میکند‬ ‫ایجاد‬ ‫میباشد‬ ‫شاخه‬.‫توجه‬
‫کامیت‬ ‫این‬ ‫که‬ ‫باشید‬ ‫داشته‬‫ترکیب‬
‫دو‬ ‫جدید‬‫را‬ ‫ریشه‬‫به‬ ‫دسترسی‬ ‫و‬ ‫دارد‬
‫اگر‬ ‫و‬ ‫دارد‬ ‫نیز‬ ‫شاخه‬ ‫دو‬ ‫هر‬ ‫تاریخچه‬
‫فرمان‬ ‫ترکیب‬ ‫این‬ ‫از‬ ‫بعد‬git log‫را‬
‫دو‬ ‫هر‬ ‫کامیتهای‬ ‫فهرست‬ ‫کنید‬ ‫اجرا‬
‫دید‬ ‫خواهید‬ ‫را‬ ‫شاخه‬
28
‫ترکیب‬ ‫در‬ ‫مغایرت‬
‫بر‬ ‫تغییراتی‬ ‫یک‬ ‫هر‬ ‫که‬ ‫مختلف‬ ‫شاخه‬ ‫دو‬ ‫میخواهید‬ ‫شما‬ ‫که‬ ‫زمانی‬
‫کنید‬ ‫ترکیب‬ ‫هم‬ ‫با‬ ‫را‬ ،‫اند‬ ‫کرده‬ ‫ایجاد‬ ‫کد‬ ‫قسمت‬ ‫یک‬ ‫روی‬
Git‫نمیتواند‬‫به‬ ‫را‬ ‫شاخه‬ ‫کدام‬ ‫شده‬ ‫اعمال‬ ‫تغییرات‬ ‫که‬ ‫دهد‬ ‫تشخیص‬
‫یا‬ ‫ترکیب‬ ‫در‬ ‫مغایرت‬ ‫وضعیت‬ ‫این‬ ‫به‬ ‫که‬ ‫کند‬ ‫اضافه‬ ‫اصلی‬ ‫شاخه‬
merge conflicts‫گفته‬‫میشود‬.‫ترکیب‬ ‫حین‬ ‫در‬ ‫وضعیت‬ ‫این‬ ً‫مطمئنا‬Fast-
Forward‫آمد‬ ‫نخواهد‬ ‫بوجود‬.‫که‬ ‫زمانی‬Git‫با‬‫شود‬ ‫می‬ ‫مواجه‬ ‫مغایرت‬
‫میدهد‬ ‫نمایش‬ ‫را‬ ‫زیر‬ ‫پیغام‬:
‫شوند‬ ‫ترکیب‬ ‫ها‬ ‫کامیت‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫اینکه‬ ‫جای‬ ‫به‬Git‫صبر‬
‫کند‬ ‫کار‬ ‫چه‬ ‫که‬ ‫میپرسد‬ ‫شما‬ ‫از‬ ‫و‬ ‫میکند‬.‫فرمان‬ ‫اجرای‬ ‫با‬git
status‫در‬‫داشت‬ ‫خواهد‬ ‫زیر‬ ‫مشابه‬ ‫خروجی‬ ‫سناریو‬ ‫این‬:
‫ب‬‫خش‬‫از‬ ‫قبل‬=======‫شاخه‬ ‫به‬ ‫مربوط‬master‫باشد‬‫می‬‫به‬ ‫مربوط‬ ‫الباقی‬ ‫و‬
‫کنید‬ ‫ترکیب‬ ‫اصلی‬ ‫شاخه‬ ‫با‬ ‫میخواهید‬ ‫که‬ ‫هایست‬ ‫شاخه‬.‫مشکل‬ ‫حل‬ ‫برای‬
‫بخشهای‬<<<<<<‫و‬========‫و‬<<<<<<<<‫شده‬ ‫اضافه‬‫توسط‬git‫را‬‫فایل‬ ‫از‬
‫استفاده‬ ‫آن‬ ‫از‬ ‫ترکیب‬ ‫در‬ ‫میخواهید‬ ‫که‬ ‫را‬ ‫فایل‬ ‫از‬ ‫ای‬ ‫نسخه‬ ‫و‬ ‫کنید‬ ‫پاک‬
‫فرمان‬ ‫با‬ ‫سپس‬ ‫و‬ ‫دارید‬ ‫نگه‬ ‫را‬ ‫کنید‬git add‫به‬git‫فرمان‬‫مشکل‬ ‫که‬ ‫بدهید‬
‫اید‬ ‫کرده‬ ‫حل‬ ‫را‬.‫مشکل‬ ‫حل‬ ‫از‬ ‫پس‬ ‫پروژه‬ ‫از‬ ‫اگر‬confilict‫و‬‫ها‬ ‫شاخه‬ ‫ترکیب‬
log‫بگیرید‬‫فرمان‬ ‫خروجی‬ ‫در‬log‫تمامی‬confilict‫فهرست‬ ‫نیز‬ ‫گذشته‬ ‫های‬
‫پروژه‬ ‫در‬ ‫مشکل‬ ‫ریشه‬ ‫کردن‬ ‫پیدا‬ ‫به‬ ‫کمک‬ ‫موارد‬ ‫برخی‬ ‫در‬ ‫که‬ ‫شد‬ ‫خواهند‬
‫کرد‬ ‫خواهد‬.
29
‫خارجی‬ ‫های‬ ‫مخزن‬
‫از‬ ‫منظور‬remote repositories‫یا‬‫و‬ ‫آنالین‬ ‫یا‬ ‫خارجی‬ ،‫دور‬ ‫مخازن‬
...repository‫نمیباشند‬ ‫شما‬ ‫به‬ ‫متعلق‬ ‫که‬ ‫است‬ ‫هایی‬.‫این‬ ‫است‬ ‫ممکن‬
‫دیگر‬ ‫کامپیوترهای‬ ‫روی‬ ‫بر‬ ‫یا‬ ‫باشند‬ ‫مرکزی‬ ‫سرور‬ ‫یک‬ ‫روی‬ ‫بر‬ ‫مخازن‬
‫نویسان‬ ‫برنامه‬.‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫صورتی‬ ‫در‬‫پروتکل‬‫شبکه‬ ‫های‬
‫برای‬ ‫قدرتمندی‬ ‫ابزارهای‬ ‫گیت‬ ‫باشید‬ ‫داشته‬ ‫مخازن‬ ‫این‬ ‫به‬ ‫دسترسی‬
‫قرار‬ ‫شما‬ ‫اختیار‬ ‫در‬ ‫مخازن‬ ‫دیگر‬ ‫با‬ ‫همکاری‬ ‫و‬ ‫گذاری‬ ‫اشتراک‬ ‫به‬
‫میدهد‬.
‫در‬ ‫نویسان‬ ‫برنامه‬ ‫دیگر‬ ‫نمایندگی‬ ‫خارجی‬ ‫مخازن‬ ‫اصلی‬ ‫نقش‬
repository‫موجود‬ ‫شخصی‬‫شماست‬ ‫سیستم‬ ‫در‬.‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬
‫شاخه‬‫استفاده‬ ‫باید‬ ‫پروژه‬ ‫نویسی‬ ‫کد‬ ‫و‬ ‫توسعه‬ ‫فرآیند‬ ‫در‬ ‫تنها‬ ‫ها‬
‫بدهید‬ ‫جداگانه‬ ‫شاخه‬ ‫یک‬ ‫نویس‬ ‫برنامه‬ ‫هر‬ ‫به‬ ‫که‬ ‫نکنید‬ ‫سعی‬ ‫و‬ ‫شوند‬
‫یک‬ ‫نویس‬ ‫برنامه‬ ‫هر‬ ‫به‬ ‫باید‬ ‫بلکه‬repository‫یا‬‫کامال‬ ‫مخزن‬
‫بدهید‬ ‫جداگانه‬.
30
‫خارجی‬ ‫مخازن‬ ‫با‬ ‫کار‬
‫فرمان‬ ‫همانند‬git branch،‫فرمان‬git remote‫برای‬‫به‬ ‫اتصاالت‬ ‫مدیریت‬
‫میگیرد‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫مخازن‬ ‫دیگر‬.‫مخازن‬ ‫با‬ ‫کار‬ ‫برای‬
‫در‬ ‫باید‬ ‫خارجی‬repository‫خود‬‫دیگر‬ ‫به‬ ‫گرها‬ ‫اشاره‬ ‫از‬ ‫فهرستی‬
‫نام‬ ‫یک‬ ‫دارای‬ ‫گرها‬ ‫اشاره‬ ‫این‬ ‫از‬ ‫یک‬ ‫هر‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫مخازن‬
‫هستند‬ ‫آنها‬ ‫با‬ ‫کار‬ ‫راحتی‬ ‫برای‬.
‫مخازن‬ ‫کردن‬ ‫لیست‬‫خارجی‬
‫فرمان‬ ‫اجرای‬ ‫با‬git remote‫بدون‬‫مخازن‬ ‫از‬ ‫فهرستی‬ ‫پارامتری‬ ‫هیچ‬
‫شد‬ ‫خواهد‬ ‫ارائه‬ ‫موجود‬ ‫خارجی‬.‫خارجی‬ ‫مخزن‬ ‫هیچ‬ ‫که‬ ‫صورتی‬ ‫در‬
‫داد‬ ‫نخواهد‬ ‫خروجی‬ ‫هیچ‬ ‫فرمان‬ ‫این‬ ‫نباشد‬ ‫موجود‬.‫موجود‬ ‫مخزن‬ ‫اگر‬
‫طریق‬ ‫از‬ ‫را‬ ‫خود‬ ‫سیستم‬ ‫در‬git clone‫دانلود‬‫اجرای‬ ‫با‬ ‫باشید‬ ‫کرده‬
‫فرمان‬git remote‫یک‬‫نام‬ ‫با‬ ‫خارجی‬ ‫مخزن‬origin‫فهرست‬‫شد‬ ‫خواهد‬.
‫با‬ ‫رابطه‬ ‫در‬ ‫گیت‬ ‫از‬ ‫بیشتر‬ ‫اطالعات‬ ‫دریافت‬ ‫به‬ ‫مایل‬ ‫که‬ ‫صورتی‬ ‫در‬
‫سویچ‬ ‫از‬ ‫میتوانید‬ ‫هستید‬ ‫خارجی‬ ‫مخازن‬-v‫فرمان‬ ‫در‬git remote
‫استفاده‬‫از‬ ‫هریک‬ ‫کامل‬ ‫آدرس‬ ‫نام‬ ‫بر‬ ‫عالوه‬ ‫صورت‬ ‫این‬ ‫در‬ ‫که‬ ‫کنید‬
‫میشود‬ ‫ارائه‬ ‫نیز‬ ‫خارجی‬ ‫مخازن‬.
31
‫خارجی‬ ‫مخازن‬ ‫ایجاد‬
‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬git remote add‫میتوان‬‫یک‬ ‫به‬ ‫جدید‬ ‫اتصال‬ ‫یک‬
‫کرد‬ ‫ثبت‬ ‫را‬ ‫خارجی‬ ‫مخزن‬.‫زیر‬ ‫صورت‬ ‫به‬ ‫فرمان‬ ‫این‬ ‫کلی‬ ‫فرم‬
‫میباشد‬:
 git remote add <name> <path-to-repo>
‫شده‬ ‫ذکر‬ ‫آدرس‬ ‫با‬ ‫مخزن‬ ‫به‬ ‫میتوانید‬ ‫شما‬ ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫از‬ ‫بعد‬
‫متصل‬ ‫اید‬ ‫داده‬ ‫کانکشن‬ ‫به‬ ‫که‬ ‫نامی‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫فرمان‬ ‫در‬
‫شوید‬.‫دیگر‬ ‫با‬ ‫ارتباط‬ ‫برقراری‬ ‫برای‬ ‫متعددی‬ ‫های‬ ‫پروتوکل‬ ‫از‬ ‫گیت‬
‫مانند‬ ‫میکند‬ ‫استفاده‬ ‫خارجی‬ ‫مخازن‬file،ssh،http‫و‬‫خود‬ ‫پروتوکل‬
‫مثال‬ ‫طور‬ ‫به‬ ‫گیت‬:
 git remote add some-user ssh://git@github.com/some-user/some-repo.git
‫با‬ ‫میتوانید‬ ‫شما‬ ‫باال‬ ‫فرضی‬ ‫فرمان‬ ‫اجرای‬ ‫از‬ ‫بعد‬‫نام‬some-user‫به‬
‫آدرس‬ ‫در‬ ‫موجود‬ ‫خارجی‬ ‫مخزن‬github.com/some-user/some-repo.git
‫دسترسی‬‫کنید‬ ‫پیدا‬.‫پروتوکل‬ ‫از‬ ‫که‬ ‫آنجایی‬ ‫از‬ssh‫استفاده‬‫شده‬
‫شد‬ ‫خواهد‬ ‫درخواست‬ ‫گذرواژه‬ ‫شما‬ ‫از‬ ‫اجرا‬ ‫از‬ ‫بعد‬ ‫است‬.‫معموال‬ ‫لذا‬
‫پروتوکل‬ ‫این‬ ‫از‬ ‫نویسان‬ ‫برنامه‬ ‫دیگر‬ ‫به‬ ‫ثبت‬ ‫اجازه‬ ‫دادن‬ ‫برای‬
‫که‬ ‫صورتی‬ ‫در‬ ‫میشود‬ ‫استفاده‬‫پروتوکل‬http‫به‬‫تنها‬ ‫عمومی‬ ‫صورت‬
‫میدهد‬ ‫کنندگان‬ ‫درخواست‬ ‫به‬ ‫را‬ ‫مخزن‬ ‫از‬ ‫خواندن‬ ‫اجازه‬.
32
‫خارجی‬ ‫مخازن‬ ‫ایجاد‬
‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬git remote add‫یک‬ ‫به‬ ‫جدید‬ ‫اتصال‬ ‫یک‬ ‫میتوان‬
‫کرد‬ ‫ثبت‬ ‫را‬ ‫خارجی‬ ‫مخزن‬.‫زیر‬ ‫صورت‬ ‫به‬ ‫فرمان‬ ‫این‬ ‫کلی‬ ‫فرم‬
‫میباشد‬:
 git remote add <name> <path-to-repo>
‫شده‬ ‫ذکر‬ ‫آدرس‬ ‫با‬ ‫مخزن‬ ‫به‬ ‫میتوانید‬ ‫شما‬ ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫از‬ ‫بعد‬
‫متصل‬ ‫اید‬ ‫داده‬ ‫کانکشن‬ ‫به‬ ‫که‬ ‫نامی‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫فرمان‬ ‫در‬
‫شوید‬.‫دیگر‬ ‫با‬ ‫ارتباط‬ ‫برقراری‬ ‫برای‬ ‫متعددی‬ ‫های‬ ‫پروتوکل‬ ‫از‬ ‫گیت‬
‫مانند‬ ‫میکند‬ ‫استفاده‬ ‫خارجی‬ ‫مخازن‬file،ssh،http‫و‬‫خود‬ ‫پروتوکل‬
‫مثال‬ ‫طور‬ ‫به‬ ‫گیت‬:
 git remote add some-user ssh://git@github.com/some-user/some-repo.git
‫با‬ ‫میتوانید‬ ‫شما‬ ‫باال‬ ‫فرضی‬ ‫فرمان‬ ‫اجرای‬ ‫از‬ ‫بعد‬‫نام‬some-user‫به‬
‫آدرس‬ ‫در‬ ‫موجود‬ ‫خارجی‬ ‫مخزن‬github.com/some-user/some-repo.git
‫دسترسی‬‫کنید‬ ‫پیدا‬.‫پروتوکل‬ ‫از‬ ‫که‬ ‫آنجایی‬ ‫از‬ssh‫استفاده‬‫شده‬
‫شد‬ ‫خواهد‬ ‫درخواست‬ ‫گذرواژه‬ ‫شما‬ ‫از‬ ‫اجرا‬ ‫از‬ ‫بعد‬ ‫است‬.‫معموال‬ ‫لذا‬
‫پروتوکل‬ ‫این‬ ‫از‬ ‫نویسان‬ ‫برنامه‬ ‫دیگر‬ ‫به‬ ‫ثبت‬ ‫اجازه‬ ‫دادن‬ ‫برای‬
‫که‬ ‫صورتی‬ ‫در‬ ‫میشود‬ ‫استفاده‬‫پروتوکل‬http‫به‬‫تنها‬ ‫عمومی‬ ‫صورت‬
‫میدهد‬ ‫کنندگان‬ ‫درخواست‬ ‫به‬ ‫را‬ ‫مخزن‬ ‫از‬ ‫خواندن‬ ‫اجازه‬.
‫مخازن‬ ‫حذف‬‫خارجی‬
‫در‬‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫نهایت‬git remote
rm‫شما‬‫خارجی‬ ‫مخازن‬ ‫به‬ ‫اتصال‬ ‫میتوانید‬
‫کنید‬ ‫پاک‬ ‫خود‬ ‫سیستم‬ ‫از‬ ‫را‬.
git remote rm <remote-name>
33
‫خارجی‬ ‫های‬ ‫شاخه‬ ‫جذب‬
‫یا‬ ‫جذب‬ ،‫خارجی‬ ‫مخازن‬ ‫دیگر‬ ‫از‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫دانلود‬ ‫عمل‬ ‫به‬fetch‫گفته‬
‫میشود‬.‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫میتوانید‬ ‫شما‬ ‫خارجی‬ ‫شاخه‬ ‫دانلود‬ ‫برای‬git
fetch‫و‬‫کنید‬ ‫استفاده‬ ‫شاخه‬ ‫و‬ ‫خارجی‬ ‫مخزن‬ ‫مستعار‬ ‫نام‬ ‫بیان‬.‫مثال‬ ‫طور‬ ‫به‬:
 git fetch <remote> <branch>
‫نظر‬ ‫مورد‬ ‫خارجی‬ ‫مخزن‬ ‫در‬ ‫موجود‬ ‫های‬ ‫شاخه‬ ‫تمامی‬ ‫تا‬ ‫بودید‬ ‫مایل‬ ‫که‬ ‫صورتی‬ ‫در‬
‫کنید‬ ‫اجرا‬ ‫شاخه‬ ‫نام‬ ‫بیان‬ ‫بدون‬ ‫را‬ ‫باال‬ ‫فرمان‬ ‫است‬ ‫کافی‬ ‫کنید‬ ‫دانلود‬ ‫را‬.
‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫همچنین‬git branch‫همراه‬ ‫به‬‫سویچ‬-r‫از‬ ‫پس‬ ‫میتوانید‬
‫کنید‬ ‫درخواست‬ ‫گیت‬ ‫از‬ ‫نیز‬ ‫را‬ ‫آنها‬ ‫از‬ ‫فهرستی‬ ‫ها‬ ‫شاخه‬ ‫دانلود‬:
 git branch -r
‫بود‬ ‫خواهد‬ ‫زیر‬ ‫نمونه‬ ‫مانند‬ ‫شده‬ ‫ارائه‬ ‫فهرست‬ ‫که‬:
origin/master
origin/some-feature
origin/another-featur
‫های‬ ‫شاخه‬ ‫همیشه‬ ،‫محلی‬ ‫های‬ ‫شاخه‬ ‫از‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫کردن‬ ‫متمایز‬ ‫برای‬
‫بهمراه‬ ‫را‬ ‫دارند‬ ‫قرار‬ ‫آن‬ ‫در‬ ‫که‬ ‫خارجی‬ ‫مخزن‬ ‫مستعار‬ ‫نام‬ ‫پیشوند‬ ‫خارجی‬
‫دارند‬.‫گر‬ ‫اشاره‬ ‫تنها‬ ‫حقیقت‬ ‫در‬ ‫گیت‬ ‫در‬ ‫خارجی‬ ‫مخازن‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬
‫نیستند‬ ‫مخازن‬ ‫دیگر‬ ‫به‬ ‫دائمی‬ ‫اتصال‬ ‫و‬ ‫هستند‬.‫در‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫همچنین‬
‫نسخه‬ ‫به‬ ‫محدود‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫روی‬ ‫بر‬ ‫تغییرات‬ ‫و‬ ‫میشوند‬ ‫کپی‬ ‫محلی‬ ‫مخزن‬
‫ماند‬ ‫خواهند‬ ‫باقی‬ ‫شده‬ ‫کپی‬ ‫های‬.‫صورت‬ ‫به‬ ‫گیت‬ ‫که‬ ‫معناست‬ ‫بدان‬ ‫این‬ ‫همچنین‬
‫به‬ ‫اقدام‬ ‫خودکار‬fetch‫به‬ ‫باید‬ ‫شما‬ ‫و‬ ‫نمیکند‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫بروزرسانی‬ ‫و‬
34
‫خارجی‬ ‫های‬ ‫شاخه‬ ‫بررسی‬
‫هستند‬ ‫خواندنی‬ ‫تنها‬ ‫خارجی‬ ‫های‬ ‫شاخه‬.‫که‬ ‫زمانی‬ ‫که‬ ‫معنا‬ ‫بدین‬
‫از‬ ‫استفاده‬ ‫با‬ ‫شما‬git checkout‫به‬،‫میکنید‬ ‫پیدا‬ ‫دسترسی‬ ‫شاخه‬ ‫یک‬
‫بررسی‬ ‫و‬ ‫ببینید‬ ‫را‬ ‫آن‬ ‫کامیتهای‬ ‫و‬ ‫آن‬ ‫تاریخچه‬ ‫میتوانید‬ ‫تنها‬
‫خود‬ ‫محلی‬ ‫مخزن‬ ‫به‬ ‫را‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫این‬ ‫که‬ ‫زمانی‬ ‫تا‬ ‫ولی‬ ‫کنید‬
‫اعمال‬ ‫تغییرات‬ ‫و‬ ‫کنید‬ ‫کار‬ ‫آنها‬ ‫روی‬ ‫بر‬ ‫نمیتوانید‬ ‫نکنید‬ ‫متصل‬
‫کنید‬.
‫عملگر‬..‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫تاریخچه‬ ‫کردن‬ ‫فیلتر‬ ‫در‬git log
‫بسیار‬‫دارد‬ ‫کاربرد‬.‫شاخه‬ ‫آپدیتهای‬ ‫تمامی‬ ‫زیر‬ ‫فرمان‬ ‫مثال‬ ‫برای‬
‫خارجی‬origin/master‫که‬‫محلی‬ ‫شاخه‬ ‫در‬master‫شما‬‫را‬ ‫نیست‬ ‫موجود‬
‫میکند‬ ‫فهرست‬.‫با‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫ترکیب‬ ‫از‬ ‫قبل‬ ‫فرمان‬ ‫این‬ ‫اجرای‬
‫میشود‬ ‫توصیه‬ ‫محلی‬ ‫های‬ ‫شاخه‬.
 git log master..origin/master
‫روند‬ ‫از‬ ‫شما‬ ‫که‬ ‫است‬ ‫معنی‬ ‫بدان‬ ‫این‬ ‫داشت‬ ‫خروجی‬ ‫فرمان‬ ‫این‬ ‫اگر‬
‫باید‬ ً‫احتماال‬ ‫و‬ ‫هستید‬ ‫عقب‬ ‫پروژه‬ ‫سازی‬ ‫پیاده‬repository‫محلی‬‫خود‬
‫کنید‬ ‫آپدیت‬ ‫را‬.‫میپردازیم‬ ‫آن‬ ‫بررسی‬ ‫به‬ ‫بعد‬ ‫بخش‬ ‫در‬ ‫که‬.
‫امکان‬checkout‫شاخه‬‫با‬ ‫اما‬ ‫میباشد‬ ‫موجود‬ ‫گیت‬ ‫در‬ ‫خارجی‬ ‫های‬
‫فرمان‬ ‫اجرای‬git checkout‫بر‬‫وضعیت‬ ‫در‬ ‫شما‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫روی‬
35
‫ریشه‬ ‫جابجایی‬ ‫و‬ ‫ترکیب‬
‫صورت‬ ‫به‬ ‫و‬ ‫هستید‬ ‫نویسی‬ ‫برنامه‬ ‫تیم‬ ‫یک‬ ‫عضو‬ ‫شما‬ ‫که‬ ‫کنید‬ ‫فرض‬
‫میکنید‬ ‫کار‬ ‫پروژه‬ ‫یک‬ ‫روی‬ ‫بر‬ ‫گروهی‬.‫از‬ ‫بخشی‬ ‫روی‬ ‫بر‬ ‫شما‬ ‫و‬
‫نام‬ ‫با‬ ‫پروژه‬some-feature‫در‬‫هستید‬ ‫نویسی‬ ‫کد‬ ‫حال‬.‫گذشت‬ ‫با‬
‫زیاد‬ ‫احتمال‬ ‫به‬ ‫و‬ ‫میدهد‬ ‫ادامه‬ ‫خود‬ ‫توسعه‬ ‫به‬ ‫رسمی‬ ‫پروژه‬ ‫زمان‬
‫اضافه‬ ‫خود‬ ‫محلی‬ ‫مخزن‬ ‫را‬ ‫جدید‬ ‫تغییرات‬ ‫که‬ ‫داشت‬ ‫خواهید‬ ‫نیاز‬ ‫شما‬
‫درست‬ ‫عملکرد‬ ‫از‬ ‫تا‬ ‫کنید‬some-feature‫با‬‫مطمئن‬ ‫جدید‬ ‫آپدیتهای‬
‫شوید‬.
‫فرمان‬ ‫از‬ ‫باید‬ ‫شما‬ ‫سناریویی‬ ‫چنین‬ ‫در‬git merge‫استفاده‬‫تا‬ ‫کنید‬
‫شاخه‬ ‫به‬ ‫را‬ ‫جدید‬ ‫آپدیتهای‬master‫کنید‬ ‫اضافه‬
‫از‬ ‫ترکیب‬ ‫این‬ ‫است‬ ‫کرده‬ ‫پیدا‬ ‫انشعاب‬ ‫شما‬ ‫تاریخچه‬ ‫که‬ ‫آنجا‬ ‫از‬
‫ترکیب‬ ‫اعمال‬ ‫از‬ ‫پس‬ ‫و‬ ‫بود‬ ‫خواهد‬ ‫طرفه‬ ‫سه‬ ‫نوع‬some-feature‫به‬
‫شاخه‬ ‫آپیدیتهای‬ ‫آخرین‬master‫دسترسی‬‫داشت‬ ‫خواهد‬
36
‫ریشه‬ ‫جابجایی‬ ‫و‬ ‫ترکیب‬
‫پر‬ ‫پروژه‬ ‫تاریخچه‬ ‫مداوم‬ ‫آپدیتهای‬ ‫با‬ ‫میکنید‬ ‫مالحظه‬ ‫که‬ ‫همانطور‬
‫سه‬ ‫ترکیب‬ ‫سازی‬ ‫پیاده‬ ‫برای‬ ‫تنها‬ ‫که‬ ‫معنا‬ ‫بی‬ ‫کامیتهای‬ ‫از‬ ‫میشود‬
‫هستند‬ ‫نیاز‬ ‫طرفه‬.‫میشود‬ ‫توصیه‬ ‫خطی‬ ‫ای‬ ‫تاریخچه‬ ‫داشتن‬ ‫برای‬ ‫لذا‬
‫به‬‫جای‬merge‫از‬rebase‫استفاده‬‫زیر‬ ‫صورت‬ ‫به‬ ‫شود‬:
37
Pulling
‫از‬ ‫استفاده‬ ‫که‬ ‫آنجا‬ ‫از‬‫فرمانهای‬fetch‫و‬merge‫خیلی‬‫برنامه‬ ‫در‬
‫شاخه‬ ‫با‬ ‫کار‬ ‫راحتی‬ ‫برای‬ ‫میانبر‬ ‫یک‬ ‫گیت‬ ‫هستند‬ ‫رایج‬ ‫تیمی‬ ‫نویسی‬
‫نام‬ ‫با‬ ‫میدهد‬ ‫قرار‬ ‫ما‬ ‫اختیار‬ ‫در‬ ‫خارجی‬ ‫های‬pull
 git pull origin/maste
‫با‬‫شاخه‬ ‫گیت‬ ‫باال‬ ‫فرمان‬ ‫اجرای‬master‫در‬‫خارجی‬ ‫مخزن‬origin‫را‬
fetch‫میکند‬‫جاری‬ ‫شاخه‬ ‫به‬ ‫آنرا‬ ‫و‬merge‫میکند‬.‫در‬ ‫همچنین‬
‫میتوانید‬ ‫کنید‬ ‫استفاده‬ ‫طرفه‬ ‫سه‬ ‫ترکیب‬ ‫از‬ ‫نمیخواهید‬ ‫که‬ ‫صورتی‬
‫آرگومان‬--rebase‫را‬‫پس‬ ‫صورت‬ ‫این‬ ‫در‬ ‫که‬ ‫دهید‬ ‫پاس‬ ‫باال‬ ‫فرمان‬ ‫به‬
‫از‬fetch‫شاخه‬‫از‬ ‫استفاده‬ ‫با‬ ‫خارجی‬rebase‫به‬‫اضافه‬ ‫جاری‬ ‫شاخه‬
‫میشود‬.
38
Pushing
‫فرمان‬ ‫تکمیل‬ ‫برای‬git fetch‫فرمان‬ ‫گیت‬push‫ما‬ ‫اختیار‬ ‫در‬ ‫نیز‬ ‫را‬
‫عملکرد‬ ‫عکس‬ ً‫دقیقا‬ ‫آن‬ ‫عمکرد‬ ‫که‬ ‫میدهد‬ ‫قرار‬fetch‫میباشد‬.‫این‬ ‫از‬
‫میشود‬ ‫استفاده‬ ‫خارجی‬ ‫مخازن‬ ‫به‬ ‫محلی‬ ‫های‬ ‫شاخه‬ ‫آپلود‬ ‫برای‬ ‫فرمان‬
‫میباشد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫فرمان‬ ‫این‬ ‫فرم‬ ‫که‬:
 git push <remote> <branch>
‫محلی‬ ‫شاخه‬ ‫باال‬ ‫فرمان‬<branch>‫را‬‫شده‬ ‫مشخص‬ ‫خارجی‬ ‫مخزن‬ ‫به‬
‫میکند‬ ‫آپلود‬.‫عمل‬ ‫در‬ ‫اما‬fetch‫با‬push‫آن‬ ‫و‬ ‫دارند‬ ‫اساس‬ ‫فرق‬ ‫یک‬
‫برخالف‬ ‫که‬ ‫هست‬ ‫این‬fetch‫که‬‫حالت‬ ‫در‬ ‫خارجی‬ ‫شاخه‬ ‫یک‬detached‫به‬
‫میکند‬ ‫اضافه‬ ‫محلی‬ ‫مخزن‬‫فرمان‬push‫در‬‫محلی‬ ‫شاخه‬ ‫یک‬ ‫مقصد‬ ‫مخزن‬
‫میکند‬ ‫ایجاد‬.‫مخزن‬ ‫در‬ ‫را‬ ‫زیر‬ ‫فرمان‬ ‫شما‬ ‫کنید‬ ‫فرض‬ ‫مثال‬ ‫طور‬ ‫به‬
‫میکنید‬ ‫اجرا‬ ‫خود‬ ‫محلی‬:
 git push mary my-feature
‫نخواهد‬ ‫ایجاد‬ ‫شما‬ ‫محلی‬ ‫مخزن‬ ‫در‬ ‫تغییری‬ ‫هیچ‬ ‫فرمان‬ ‫این‬ ‫اجرای‬
‫مخزن‬ ‫روی‬ ‫بر‬ ‫که‬ ‫تغییراتی‬ ‫اما‬ ‫کرد‬mary‫ایجاد‬‫صورت‬ ‫به‬ ‫میشوند‬
‫بود‬ ‫خواهند‬ ‫زیر‬
39
Pushing
‫فرمان‬ ‫تکمیل‬ ‫برای‬git fetch‫فرمان‬ ‫گیت‬push‫ما‬ ‫اختیار‬ ‫در‬ ‫نیز‬ ‫را‬
‫عملکرد‬ ‫عکس‬ ً‫دقیقا‬ ‫آن‬ ‫عمکرد‬ ‫که‬ ‫میدهد‬ ‫قرار‬fetch‫میباشد‬.‫این‬ ‫از‬
‫میشود‬ ‫استفاده‬ ‫خارجی‬ ‫مخازن‬ ‫به‬ ‫محلی‬ ‫های‬ ‫شاخه‬ ‫آپلود‬ ‫برای‬ ‫فرمان‬
‫میباشد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫فرمان‬ ‫این‬ ‫فرم‬ ‫که‬:
 git push <remote> <branch>
‫محلی‬ ‫شاخه‬ ‫باال‬ ‫فرمان‬<branch>‫را‬‫شده‬ ‫مشخص‬ ‫خارجی‬ ‫مخزن‬ ‫به‬
‫میکند‬ ‫آپلود‬.‫عمل‬ ‫در‬ ‫اما‬fetch‫با‬push‫آن‬ ‫و‬ ‫دارند‬ ‫اساس‬ ‫فرق‬ ‫یک‬
‫برخالف‬ ‫که‬ ‫هست‬ ‫این‬fetch‫که‬‫حالت‬ ‫در‬ ‫خارجی‬ ‫شاخه‬ ‫یک‬detached‫به‬
‫میکند‬ ‫اضافه‬ ‫محلی‬ ‫مخزن‬‫فرمان‬push‫در‬‫محلی‬ ‫شاخه‬ ‫یک‬ ‫مقصد‬ ‫مخزن‬
‫میکند‬ ‫ایجاد‬.‫مخزن‬ ‫در‬ ‫را‬ ‫زیر‬ ‫فرمان‬ ‫شما‬ ‫کنید‬ ‫فرض‬ ‫مثال‬ ‫طور‬ ‫به‬
‫میکنید‬ ‫اجرا‬ ‫خود‬ ‫محلی‬:
 git push mary my-feature
‫نخواهد‬ ‫ایجاد‬ ‫شما‬ ‫محلی‬ ‫مخزن‬ ‫در‬ ‫تغییری‬ ‫هیچ‬ ‫فرمان‬ ‫این‬ ‫اجرای‬
‫مخزن‬ ‫روی‬ ‫بر‬ ‫که‬ ‫تغییراتی‬ ‫اما‬ ‫کرد‬mary‫ایجاد‬‫صورت‬ ‫به‬ ‫میشوند‬
‫بود‬ ‫خواهند‬ ‫زیر‬
‫باشید‬ ‫داشته‬ ‫توجه‬‫هم‬‫اکنون‬my-
feature‫یک‬‫در‬ ‫میباشد‬ ‫محلی‬ ‫شاخه‬
‫فرمان‬ ‫اگر‬ ‫که‬ ‫صورتی‬fetch‫از‬‫روی‬
‫مخزن‬mary‫یک‬ ‫شاخه‬ ‫این‬ ‫میشد‬ ‫اجرا‬
‫حالت‬ ‫در‬ ‫خارجی‬ ‫شاخه‬detached
‫میبود‬.‫خاصیت‬ ‫این‬push‫کمی‬‫آنرا‬
‫میکند‬ ‫خطرناک‬.‫بر‬ ‫شما‬ ‫که‬ ‫کنید‬ ‫فرض‬
‫نویسی‬ ‫کد‬ ‫حال‬ ‫در‬ ‫خود‬ ‫مخزن‬ ‫روی‬
‫ظاهر‬ ‫محلی‬ ‫شاخه‬ ‫یک‬ ‫ناگهان‬ ‫و‬ ‫هستید‬
‫میشود‬!‫برای‬ ‫تنها‬ ‫فرمان‬ ‫این‬ ‫از‬ ‫لذا‬
‫مرکزی‬ ‫مخازن‬ ‫بروزرسانی‬‫استفاده‬
‫شود‬‫می‬
40
‫یا‬ ‫عمومی‬ ‫مخازن‬public
‫نقطه‬ ‫نقش‬ ‫که‬ ‫هستند‬ ‫عمومی‬ ‫مخزن‬ ‫یک‬ ‫حاوی‬ ‫تیمی‬ ‫های‬ ‫پروژه‬ ‫تمامی‬
‫میکند‬ ‫ایفا‬ ‫را‬ ‫نویس‬ ‫برنامه‬ ‫هر‬ ‫برای‬ ‫پروژه‬ ‫به‬ ‫ورود‬.‫مخازن‬
‫میباشند‬ ‫کاری‬ ‫یا‬ ‫پروژه‬ ‫پوشه‬ ‫بدون‬ ‫و‬ ‫ساده‬ ‫همیشه‬ ‫عمومی‬.‫علت‬
‫اعضاء‬ ‫دیگر‬ ‫کار‬ ‫حذف‬ ‫یا‬ ‫و‬ ‫تغییر‬ ‫از‬ ‫جلوگیری‬ ،‫پروژه‬ ‫پوشه‬ ‫نداشتن‬
‫میباشد‬ ‫اعضاء‬ ‫دیگر‬ ‫توسط‬ ‫اتفاقی‬ ‫صورت‬ ‫به‬ ‫تیم‬.‫مخزن‬ ‫ایجاد‬ ‫برای‬
‫کنید‬ ‫استفاده‬ ‫زیر‬ ‫فرمان‬ ‫از‬ ‫پروژه‬ ‫پوشه‬ ‫بدون‬:
 git init --bare <path>
‫شوند‬ ‫استفاده‬ ‫پروژه‬ ‫کد‬ ‫سورس‬ ‫ذخیره‬ ‫جهت‬ ‫تنها‬ ‫باید‬ ‫عمومی‬ ‫مخازن‬
‫پروژه‬ ‫توسعه‬ ‫و‬ ‫طراحی‬ ‫محیط‬ ‫عنوان‬ ‫به‬ ‫نه‬.‫پسوند‬ ‫از‬ ‫لذا‬git‫برای‬
‫به‬ ‫کامل‬ ‫مثال‬ ‫نتیجه‬ ‫در‬ ‫میشود‬ ‫استفاده‬ ‫عمومی‬ ‫مخزن‬ ‫کردن‬ ‫مشخص‬
‫بود‬ ‫خواهد‬ ‫زیر‬ ‫صورت‬:
 git init --bare some-repo.git
‫دیگر‬ ‫با‬ ‫دیگری‬ ‫فرق‬ ‫عمومی‬ ‫مخازن‬ ،‫پروژه‬ ‫پوشه‬ ‫نبودن‬ ‫دارا‬ ‫جز‬ ‫به‬
‫از‬ ‫مخازن‬ ‫دیگر‬ ‫مانند‬ ‫میتوانید‬ ‫شما‬ ‫و‬ ‫ندارند‬ ‫عادی‬ ‫مخازن‬push،
pull‫و‬...‫کنید‬ ‫استفاده‬ ‫آنها‬ ‫روی‬ ‫بر‬.
41
‫متمرکز‬ ‫مدل‬
‫از‬ ‫یک‬ ‫هر‬ ‫که‬ ‫طوری‬ ‫به‬ ‫میباشد‬ ‫کوچک‬ ‫تیمهای‬ ‫مناسب‬ ‫متمرکز‬ ‫مدل‬
‫مخزن‬ ‫روی‬ ‫بر‬ ‫تغییرات‬ ‫ثبت‬ ‫دسترسی‬ ‫سطح‬ ‫دارای‬ ‫نویسی‬ ‫کد‬ ‫تیم‬ ‫اعضاء‬
‫هستند‬ ‫عمومی‬.‫سیستمهای‬ ‫در‬ ‫رایج‬ ‫مدل‬ ‫شبیه‬ ‫بسیار‬ ‫مدل‬ ‫این‬SVN‫و‬
CVS‫میباشد‬.‫مخزن‬ ‫بواسطه‬ ‫باید‬ ‫تغییرات‬ ‫تمامی‬ ‫مدل‬ ‫این‬ ‫در‬
‫شود‬ ‫گذاشته‬ ‫اشتراک‬ ‫به‬ ‫تیم‬ ‫اعضای‬ ‫تمام‬ ‫بین‬ ‫عمومی‬.‫مدل‬ ‫این‬ ‫در‬
‫آنالین‬ ‫یا‬ ‫و‬ ‫هستند‬ ‫نصب‬ ‫داخلی‬ ‫سرور‬ ‫روی‬ ‫بر‬ ‫معموال‬ ‫عمومی‬ ‫مخزن‬
‫مانند‬ ‫هستند‬github‫و‬bitbucket
‫مختلف‬ ‫کدنویسان‬ ‫مدل‬ ‫این‬ ‫در‬
‫خود‬ ‫شخصی‬ ‫مخازن‬ ‫روی‬ ‫پروژه‬
‫کار‬‫کنند‬‫می‬‫از‬ ً‫کامال‬ ‫که‬
‫جدا‬ ‫همکاران‬ ‫دیگر‬ ‫مخازن‬
‫میباشند‬.‫نویسی‬ ‫کد‬ ‫که‬ ‫زمانی‬
‫یک‬ ‫هر‬ ‫توسط‬ ‫پروژه‬ ‫از‬ ‫بخش‬ ‫یک‬
‫در‬ ‫کد‬ ،‫شد‬ ‫تکمیل‬ ‫اعضا‬ ‫از‬
‫کامیت‬ ‫شخصی‬ ‫مخازن‬ ‫مستر‬ ‫شاخه‬
‫عمومی‬ ‫مخزن‬ ‫به‬ ‫سپس‬ ‫و‬ ‫میشوند‬
push‫شوند‬‫می‬.
42
‫متمرکز‬ ‫مدل‬
‫عمومی‬ ‫مخزن‬ ‫به‬ ‫تیم‬ ‫اعضا‬ ‫از‬ ‫یکی‬ ‫توسط‬ ‫جدید‬ ‫تغییرات‬ ‫آپلود‬ ‫از‬ ‫پس‬
‫با‬ ‫خود‬ ‫شخصی‬ ‫مخازن‬ ‫به‬ ‫را‬ ‫تغییرات‬ ‫این‬ ‫میتوانند‬ ‫تیم‬ ‫اعضا‬ ‫دیگر‬
‫از‬ ‫استفاده‬merge‫یا‬ ‫و‬rebase‫اضافه‬‫کنند‬.
‫فرآیند‬ ‫با‬‫در‬ ‫اصلی‬‫شدیم‬ ‫آشنا‬ ‫متمرکز‬ ‫مدل‬.‫دارای‬ ‫مدل‬ ‫این‬ ‫اما‬
‫تیم‬ ‫عضو‬ ‫چند‬ ‫که‬ ‫زمانی‬ ‫مثال‬ ‫طور‬ ‫به‬ ،‫میباشد‬ ‫نیز‬ ‫محدودیتهایی‬
‫مشکل‬ ‫دچار‬ ‫مدل‬ ‫این‬ ‫کنند‬ ‫آپلود‬ ‫عمومی‬ ‫مخزن‬ ‫به‬ ‫همزمان‬ ‫بخواهند‬
‫میشود‬.‫که‬ ‫شد‬ ‫اشاره‬ ‫مدل‬ ‫این‬ ‫معرفی‬ ‫ابتدای‬ ‫در‬ ‫هم‬ ‫دلیل‬ ‫همین‬ ‫به‬
‫میباشد‬ ‫نویسی‬ ‫برنامه‬ ‫کوچک‬ ‫تیمهای‬ ‫مناسب‬ ‫مدل‬ ‫این‬.
‫کند‬ ‫پیدا‬ ‫دسترسی‬ ‫عمومی‬ ‫مخزن‬ ‫به‬ ‫که‬ ‫عضوی‬ ‫اولین‬ ‫شرایطی‬ ‫چنین‬ ‫در‬
‫شدن‬ ‫شاخه‬ ‫با‬ ‫دیگر‬ ‫عضو‬ ‫اما‬ ‫کند‬ ‫آپلود‬ ‫را‬ ‫خود‬ ‫تغییرات‬ ‫میتواند‬
‫از‬ ‫نمیتواند‬ ‫و‬ ‫میشود‬ ‫مواجه‬ ‫تاریخچه‬fast forward‫برای‬merge
‫استفاده‬‫کند‬.‫با‬ ‫نویسی‬ ‫برنامه‬ ‫اگر‬ ‫زیر‬ ‫تصویر‬ ‫در‬ ‫مثال‬ ‫طور‬ ‫به‬
‫نام‬john‫قبل‬‫اینکه‬ ‫از‬Mary‫تغییرات‬‫اقدام‬ ‫کند‬ ‫آپلود‬ ‫را‬ ‫خود‬
‫مخزن‬ ‫در‬ ‫کند‬ ‫عمومی‬ ‫مخزن‬ ‫به‬ ‫آپلود‬ ‫به‬Mary‫تضاد‬‫می‬ ‫بوجود‬ ‫داده‬
‫آید‬
،‫همزمان‬ ‫آپلود‬ ‫مشکل‬ ‫جز‬ ‫به‬
‫و‬ ‫ساده‬ ‫بسیار‬ ‫متمرکز‬ ‫مدل‬
‫میباشد‬ ‫کوچک‬ ‫تیمهای‬ ‫مناسب‬.
‫شخصی‬ ‫مخازن‬ ‫روی‬ ‫بر‬ ‫اعضا‬
‫در‬ ً‫مرتبا‬ ‫و‬ ‫میکنند‬ ‫کار‬ ‫خود‬
‫دانلود‬ ‫و‬ ‫آپلود‬ ‫حال‬
‫عمومی‬ ‫مخزن‬ ‫به‬ ‫تغییرات‬
‫دارای‬ ‫اعضا‬ ‫تمامی‬ ‫و‬ ‫هستند‬
‫سرور‬ ‫در‬ ‫ثبت‬ ‫دسترسی‬ ‫سطح‬
‫هستند‬.
43
‫توجه‬ ‫از‬ ‫تشکر‬ ‫با‬
‫شما‬
44

More Related Content

Viewers also liked

FIAT-IFTA panel
FIAT-IFTA panelFIAT-IFTA panel
FIAT-IFTA panel
Johan Oomen
 
Présentation Proximus EnCo au #mforum
Présentation Proximus EnCo au #mforumPrésentation Proximus EnCo au #mforum
Présentation Proximus EnCo au #mforum
Agence du Numérique (AdN)
 
Eittor - 9na Jornada Técnica de Conexión Reciclado “Compostaje Industrial”
Eittor - 9na Jornada Técnica de Conexión Reciclado “Compostaje Industrial”Eittor - 9na Jornada Técnica de Conexión Reciclado “Compostaje Industrial”
Eittor - 9na Jornada Técnica de Conexión Reciclado “Compostaje Industrial”
ConexiónReciclado
 
Permanent magnet dc motors
Permanent magnet dc motorsPermanent magnet dc motors
Permanent magnet dc motors
berdici
 
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌دادهتحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
khalooei
 
Deep Learning: AI Breakthrough
Deep Learning: AI BreakthroughDeep Learning: AI Breakthrough
Deep Learning: AI Breakthrough
Mohsen Fayyaz
 
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
 تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
Alireza AkhavanPour
 
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده (2)
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده (2)تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده (2)
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده (2)
khalooei
 
(3) تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
 (3) تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده (3) تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
(3) تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
Mohsen Fayyaz
 

Viewers also liked (10)

FIAT-IFTA panel
FIAT-IFTA panelFIAT-IFTA panel
FIAT-IFTA panel
 
Présentation Proximus EnCo au #mforum
Présentation Proximus EnCo au #mforumPrésentation Proximus EnCo au #mforum
Présentation Proximus EnCo au #mforum
 
Eittor - 9na Jornada Técnica de Conexión Reciclado “Compostaje Industrial”
Eittor - 9na Jornada Técnica de Conexión Reciclado “Compostaje Industrial”Eittor - 9na Jornada Técnica de Conexión Reciclado “Compostaje Industrial”
Eittor - 9na Jornada Técnica de Conexión Reciclado “Compostaje Industrial”
 
Metamaterials
MetamaterialsMetamaterials
Metamaterials
 
Permanent magnet dc motors
Permanent magnet dc motorsPermanent magnet dc motors
Permanent magnet dc motors
 
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌دادهتحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
 
Deep Learning: AI Breakthrough
Deep Learning: AI BreakthroughDeep Learning: AI Breakthrough
Deep Learning: AI Breakthrough
 
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
 تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
 
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده (2)
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده (2)تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده (2)
تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده (2)
 
(3) تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
 (3) تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده (3) تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
(3) تحلیل با رویکرد یادگیری ژرف بر بستر کلان‌داده
 

Similar to Git

سیستم ورژن کنترل گیت
سیستم ورژن کنترل گیتسیستم ورژن کنترل گیت
سیستم ورژن کنترل گیت
farzad119
 
raid with megacli
raid with megacliraid with megacli
raid with megacli
Yashar Esmaildokht
 
android_test_approach
android_test_approachandroid_test_approach
android_test_approach
Sadegh Saberi
 
News383
News383News383
News383
Isfahanlug
 
Scrum doc
Scrum docScrum doc
امکانات بهتایم.pdf
امکانات بهتایم.pdfامکانات بهتایم.pdf
امکانات بهتایم.pdf
Reihan Rabiei
 
How Create Waf With Naxsi
How Create Waf With NaxsiHow Create Waf With Naxsi
How Create Waf With Naxsi
Yashar Esmaildokht
 
News
NewsNews
Docker
DockerDocker
squid
squidsquid
Ulimit
UlimitUlimit
Oracle_Database_12c_Most_Important_New_Features_Persian
Oracle_Database_12c_Most_Important_New_Features_PersianOracle_Database_12c_Most_Important_New_Features_Persian
Oracle_Database_12c_Most_Important_New_Features_PersianArmin Valadkhani
 
Data Management System- Haseb System Co
Data Management System- Haseb System CoData Management System- Haseb System Co
Data Management System- Haseb System Co
Hamed Ghazanfari
 
Partition in oracle mysql |Mariadb
Partition in oracle mysql |MariadbPartition in oracle mysql |Mariadb
Partition in oracle mysql |Mariadb
Yashar Esmaildokht
 
Oracle Data Integrator (persian)
Oracle Data Integrator (persian)Oracle Data Integrator (persian)
Oracle Data Integrator (persian)
Ehsan Hamzei
 
Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2
Yashar Esmaildokht
 
سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گراییسی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گرایی
mrm_196
 
برنامه نویسی ماژول دروپال در 5 مرحله
برنامه نویسی ماژول دروپال در 5 مرحلهبرنامه نویسی ماژول دروپال در 5 مرحله
برنامه نویسی ماژول دروپال در 5 مرحله
drupalika .org
 

Similar to Git (20)

سیستم ورژن کنترل گیت
سیستم ورژن کنترل گیتسیستم ورژن کنترل گیت
سیستم ورژن کنترل گیت
 
Git2
Git2Git2
Git2
 
raid with megacli
raid with megacliraid with megacli
raid with megacli
 
android_test_approach
android_test_approachandroid_test_approach
android_test_approach
 
News383
News383News383
News383
 
Scrum doc
Scrum docScrum doc
Scrum doc
 
امکانات بهتایم.pdf
امکانات بهتایم.pdfامکانات بهتایم.pdf
امکانات بهتایم.pdf
 
How Create Waf With Naxsi
How Create Waf With NaxsiHow Create Waf With Naxsi
How Create Waf With Naxsi
 
News
NewsNews
News
 
MongoDB
MongoDBMongoDB
MongoDB
 
Docker
DockerDocker
Docker
 
squid
squidsquid
squid
 
Ulimit
UlimitUlimit
Ulimit
 
Oracle_Database_12c_Most_Important_New_Features_Persian
Oracle_Database_12c_Most_Important_New_Features_PersianOracle_Database_12c_Most_Important_New_Features_Persian
Oracle_Database_12c_Most_Important_New_Features_Persian
 
Data Management System- Haseb System Co
Data Management System- Haseb System CoData Management System- Haseb System Co
Data Management System- Haseb System Co
 
Partition in oracle mysql |Mariadb
Partition in oracle mysql |MariadbPartition in oracle mysql |Mariadb
Partition in oracle mysql |Mariadb
 
Oracle Data Integrator (persian)
Oracle Data Integrator (persian)Oracle Data Integrator (persian)
Oracle Data Integrator (persian)
 
Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2
 
سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گراییسی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گرایی
 
برنامه نویسی ماژول دروپال در 5 مرحله
برنامه نویسی ماژول دروپال در 5 مرحلهبرنامه نویسی ماژول دروپال در 5 مرحله
برنامه نویسی ماژول دروپال در 5 مرحله
 

Git

  • 2. ‫کاربر‬ ‫اطالعات‬ ‫شده‬ ‫نصب‬ ‫تازه‬ ‫نسخه‬ ‫هر‬ ‫با‬ ‫که‬ ‫کاری‬ ‫اولین‬Git‫دهیم‬ ‫انجام‬ ‫باید‬ ‫است‬ ‫کاربری‬ ‫اطالعات‬ ‫کردن‬ ‫ست‬.Git‫در‬ ‫اطالعات‬ ‫این‬ ‫از‬commit‫و‬ ‫ها‬ ‫سرویسهایی‬ ‫همچنین‬ ‫و‬ ‫میکند‬ ‫استفاده‬ ‫پروژه‬ ‫تغییرات‬ ‫تاریخچه‬ ‫همچون‬GitHub‫و‬Bitbucket‫استفاده‬ ‫شما‬ ‫شناسایی‬ ‫برای‬ ‫نام‬ ‫این‬ ‫از‬ ‫میکنند‬.‫میباشد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫فرمان‬:  git config --global user.name "Omid Sohrabi"  git config --global user.email sohrabi@psi-co.net ‫سویچ‬--global‫باعث‬‫تمامی‬ ‫برای‬ ‫که‬ ‫میشود‬repository‫هایی‬‫روی‬ ‫بر‬ ‫که‬ ‫یکسان‬ ‫الکترونیکی‬ ‫پست‬ ‫و‬ ‫کاربری‬ ‫نام‬ ‫میشوند‬ ‫ایجاد‬ ‫سیستم‬ ‫این‬ ‫شود‬ ‫ثبت‬.‫برای‬ ‫میتوان‬ ‫نشود‬ ‫استفاده‬ ‫سویچ‬ ‫این‬ ‫از‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫ه‬‫ر‬repositroy‫کرد‬ ‫ست‬ ‫را‬ ‫الکترونیک‬ ‫پست‬ ‫و‬ ‫کاربر‬ ‫نام‬ ‫جداگانه‬. 2
  • 3. ‫نام‬‫ایجاد‬ ‫و‬ ‫مستعار‬Repository ‫به‬‫فرض‬ ‫پیش‬ ‫صورت‬Git‫دارای‬shortcut‫فرمانهای‬ ‫برای‬ ‫میانبر‬ ‫یا‬ ‫نمیباشد‬ ‫خود‬.‫و‬ ‫کاربرد‬ ‫پر‬ ‫فرمانهای‬ ‫برای‬ ‫میتوانید‬ ‫شما‬ ‫اما‬ ‫شده‬ ‫آورده‬ ‫مثال‬ ‫چند‬ ‫زیر‬ ‫در‬ ‫که‬ ‫کنید‬ ‫انتخاب‬ ‫مستعار‬ ‫نام‬ ‫طوالنی‬ ‫است‬:  git config --global alias.st status  git config --global alias.ci commit ‫طراحی‬ ‫در‬Git‫همیشه‬‫پیچیدگی‬ ‫از‬ ‫هست‬ ‫ممکن‬ ‫که‬ ‫آنجا‬ ‫تا‬ ‫شده‬ ‫سعی‬ ‫کنند‬ ‫دوری‬.‫بین‬ ‫فرق‬ ‫تنها‬‫یک‬Git Repository‫و‬‫زیر‬ ‫یک‬ ‫عادی‬ ‫پوشه‬ ‫یک‬ ‫نام‬ ‫با‬ ‫اضافی‬ ‫پوشه‬.git‫میباشد‬ ‫پروژه‬ ‫جاری‬ ‫پوشه‬ ‫در‬.‫اینکه‬ ‫برای‬ ‫یک‬ ‫به‬ ‫را‬ ‫عادی‬ ‫پوشه‬ ‫یک‬git repository‫تبدیل‬‫فرمان‬ ‫است‬ ‫کافی‬ ‫کنید‬ ‫را‬ ‫زیر‬‫در‬git bash‫کنید‬ ‫اجرا‬:  git init < path > 3
  • 4. ‫کردن‬ ‫کلون‬repository‫ها‬ ‫در‬‫یک‬ ‫از‬ ‫کپی‬ ‫ای‬ ‫پوشه‬ ‫در‬ ‫هستید‬ ‫مایل‬ ‫که‬ ‫صورتی‬repositoryً‫قبال‬ ‫فرمان‬ ‫از‬ ‫استفاده‬ ‫جای‬ ‫به‬ ‫دهید‬ ‫قرار‬ ‫را‬ ‫شده‬ ‫ایجاد‬init‫از‬ ‫باید‬ ‫فرمان‬clone‫کنید‬ ‫استفاده‬ ‫زیر‬ ‫صورت‬ ‫به‬:  git clone ssh://< user > @ < host > /path/to/repo.git ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫با‬git‫به‬host‫با‬ ‫و‬ ‫شده‬ ‫متصل‬ ‫شده‬ ‫مشخص‬ ‫از‬ ‫استفاده‬SSH‫دانلود‬ ‫به‬ ‫اقدام‬repo.git‫میکند‬ ‫پروژه‬.‫کپی‬ ‫از‬ ‫کامل‬ ‫کپی‬ ‫یک‬ ‫شده‬ ‫ایجاد‬repository‫یک‬ ‫نه‬ ‫میباشد‬ ‫نظر‬ ‫مورد‬ ‫آن‬ ‫به‬ ‫لینک‬.،‫پروژه‬ ‫پوشه‬ ،‫پروژه‬ ‫تاریخچه‬ ‫شما‬ ‫کپی‬ ‫این‬ ‫در‬ staging area‫و‬ ‫داشت‬ ‫خواهید‬ ‫را‬ ‫خود‬ ‫به‬ ‫منحصر‬ ‫های‬ ‫شاخه‬ ‫ساختار‬ ‫و‬ ‫تا‬ ‫داشت‬ ‫نخواهد‬ ‫پروژه‬ ‫روی‬ ‫بر‬ ‫شما‬ ‫تغییرات‬ ‫به‬ ‫دسترسی‬ ‫هیچکس‬ ‫سرور‬ ‫به‬ ‫را‬ ‫تغییرات‬ ‫و‬ ‫کنید‬ ‫را‬ ‫کامیت‬ ‫را‬ ‫تغییرات‬ ‫شما‬ ‫که‬ ‫زمانی‬ ‫یا‬ ‫عمومی‬public‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬push‫کنید‬ ‫ارسال‬ 4
  • 5. Staging Area ‫در‬GIT‫کل‬‫تغییراتی‬ ‫تنها‬ ‫و‬ ‫نمیشوند‬ ‫ذخیره‬ ‫کرده‬ ‫تغییر‬ ‫فایلهای‬ ‫این‬ ‫به‬ ‫خاطر‬ ‫همین‬ ‫به‬ ‫میشوند‬ ‫ذخیره‬ ‫شده‬ ‫اعمال‬ ‫آنها‬ ‫روی‬ ‫بر‬ ‫که‬ ‫رکوردها‬snapshot‫باالی‬ ‫سرعت‬ ‫دالیل‬ ‫از‬ ‫یکی‬ ‫و‬ ‫میشود‬ ‫گفته‬GIT‫نیز‬ ‫میباشد‬ ‫تکنیک‬ ‫این‬ ‫از‬ ‫استفاده‬. ‫منقطه‬staging‫ثبت‬ ‫از‬ ‫قبل‬ ‫میتوانید‬ ‫آن‬ ‫در‬ ‫شما‬ ‫که‬ ‫است‬ ‫مکانی‬ ‫و‬ ‫بندی‬ ‫دسته‬ ‫را‬ ‫خود‬ ‫کامیتهای‬ ‫پروژه‬ ‫روی‬ ‫بر‬ ‫شده‬ ‫اعمال‬ ‫تغییرات‬ ‫کنید‬ ‫مدیریت‬.‫از‬ ‫منظور‬staging‫انتقال‬‫پروژه‬ ‫پوشه‬ ‫از‬ ‫تغییرات‬ ‫به‬snapshot‫میباشد‬. 5
  • 6. Staging Area ‫به‬ ‫یافته‬ ‫تغییر‬ ‫یا‬ ‫و‬ ‫جدید‬ ‫فایلهای‬ ‫کردن‬ ‫اضافه‬ ‫برای‬staging area‫از‬‫کنید‬ ‫استفاده‬ ‫زیر‬ ‫فرمان‬:  git add < file > ‫به‬ ‫را‬ ‫آن‬ ‫ابتدا‬ ‫باید‬ ‫شما‬ ‫پروژه‬ ‫از‬ ‫فایل‬ ‫یک‬ ‫حذف‬ ‫برای‬staging area‫اضافه‬‫به‬ ‫سپس‬ ‫و‬ ‫کنید‬git‫را‬ ‫فایل‬ ‫این‬ ‫دیگر‬ ‫که‬ ‫دهید‬ ‫فرمان‬ ‫نکند‬ ‫ردیابی‬.‫هارد‬ ‫روی‬ ‫از‬ ‫فیزیکی‬ ‫صورت‬ ‫به‬ ‫را‬ ‫فایل‬ ‫فرمان‬ ‫این‬ ‫تنها‬ ‫نمیکند‬ ‫پاک‬ ‫دیسک‬git‫نمیکند‬ ‫مانیتور‬ ‫را‬ ‫آن‬ ‫دیگر‬:  git rm --cached < file > ‫وضعیت‬ ‫مشاهده‬repository‫یکی‬‫رایج‬ ‫عملیات‬ ‫از‬‫در‬Git‫میباشد‬. ‫پروژه‬ ‫پوشه‬ ‫از‬ ‫گزارشی‬ ‫زیر‬ ‫فرمان‬ ‫خروجی‬‫و‬staging area‫ارائه‬ ‫میدهد‬:  git status 6
  • 7. Staging Area ‫بخش‬‫عنوان‬ ‫با‬ ‫اول‬Changes to be committed‫همان‬‫وضعیت‬stage‫شما‬ ‫میباشد‬.‫فرمان‬ ‫اگر‬git commit‫را‬‫فایلهای‬ ‫تنها‬ ‫کنید‬ ‫اجرا‬ ‫االن‬ ‫میشوند‬ ‫اضافه‬ ‫پروژه‬ ‫تاریخچه‬ ‫به‬ ‫بخش‬ ‫این‬ ‫در‬ ‫شده‬ ‫ذکر‬.‫دوم‬ ‫بخش‬ ‫عنوان‬ ‫با‬Changes not staged for commit‫از‬ ‫فهرستی‬ ‫دارنده‬ ‫بر‬ ‫در‬ ‫نمیباشند‬ ‫بعدی‬ ‫کامیت‬ ‫جزء‬ ‫که‬ ‫میباشد‬ ‫مانیتور‬ ‫حال‬ ‫در‬ ‫فایلهای‬.‫و‬ ‫عنوان‬ ‫با‬ ‫آخر‬ ‫بخش‬ ‫در‬ ‫نهایت‬ ‫در‬Untracked files‫فایلهای‬ ‫از‬ ‫فهرستی‬ ‫به‬ ‫که‬ ‫پروژه‬ ‫پوشه‬ ‫در‬ ‫موجود‬repository‫ارائه‬ ‫اند‬ ‫نشده‬ ‫اضافه‬ ‫میشود‬ 7
  • 8. ‫ایجاد‬Diff‫ها‬ ‫تغییرات‬ ‫با‬ ‫رابطه‬ ‫در‬ ‫بیشتر‬ ‫اطالعات‬ ‫به‬ ‫نیاز‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫میتوانید‬ ‫هستید‬ ‫پروژه‬ ‫پوشه‬ ‫در‬ ‫گوناگون‬ ‫فایلهای‬ ‫یک‬ ‫زیر‬ ‫فرمان‬diff‫کنید‬ ‫ایجاد‬:  git diff ‫اعمال‬ ‫تغییرات‬ ‫تمامی‬ ‫از‬ ‫فهرستی‬ ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫از‬ ‫حاصل‬ ‫نتیجه‬ ‫در‬ ‫نشده‬ ‫ثبت‬ ‫و‬ ‫شده‬stage‫میباشد‬.‫میخواهید‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫همچنین‬ ‫در‬ ‫موجود‬ ‫تغییرات‬ ‫از‬ ‫کاملی‬ ‫اطالعات‬stage‫را‬‫بیاورید‬ ‫بدست‬ ‫میتوانید‬diff‫مربوط‬‫به‬stage‫را‬‫زیر‬ ‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫کنید‬ ‫ایجاد‬:  git diff -cached ‫در‬ ‫پروژه‬ ‫تاریخچه‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬git status‫نمایش‬‫داده‬ ‫نمیشود‬.‫از‬ ‫فهرستی‬ ‫نمایش‬ ‫برای‬snapshot‫از‬ ‫باید‬ ‫شده‬ ‫کامیت‬ ‫های‬ ‫فرمان‬git log‫کنید‬ ‫استفاده‬. 8
  • 9. ‫کامیتها‬ ‫کامیتها‬‫میباشند‬ ‫پروژه‬ ‫شده‬ ‫ذخیره‬ ‫نسخه‬ ‫هر‬ ‫نمایانگر‬.‫کامیت‬ ‫هر‬ ‫بردارنده‬ ‫در‬snapshot، ‫تاریخ‬ ،‫کاربر‬ ‫اطالعات‬ ،‫پروژه‬ ‫کل‬ ‫از‬ ‫یک‬ ‫و‬ ‫عنوان‬SHA-1 Chechsum‫میباشد‬ ‫کامیت‬ ‫محتوای‬ ‫تمام‬ ‫برای‬.‫به‬ ‫مثال‬ ‫طور‬: ‫این‬checksum‫نقش‬Id‫کامیت‬‫در‬Git‫کامیتها‬ ‫این‬ ‫بنابر‬ ‫دارد‬ ‫را‬ ‫بین‬ ‫از‬ ‫آنها‬ ‫داده‬ ‫یا‬ ‫و‬ ‫نمیکنند‬ ‫تغییر‬ ‫اتفاقی‬ ‫صورت‬ ‫به‬ ‫هیچوقت‬ ‫اینکه‬ ‫بدون‬ ‫نمیرود‬git‫از‬‫باشد‬ ‫نداشته‬ ‫اطالع‬ ‫آن‬. ‫که‬ ‫آنجا‬ ‫از‬staging area‫در‬‫بردارنده‬‫تغییرات‬ ‫تمامی‬‫باشد‬‫می‬ ‫داشت‬ ‫نخواهد‬ ‫پروژه‬ ‫پوشه‬ ‫بررسی‬ ‫به‬ ‫نیازی‬ ‫پروژه‬ ‫کردن‬ ‫کامیت‬. 9
  • 10. ‫کامیتها‬ ‫کردن‬ ‫کامیت‬ ‫برای‬snapshot‫در‬stage‫و‬‫به‬ ‫تغییرات‬ ‫کردن‬ ‫اضافه‬ ‫کنید‬ ‫استفاده‬ ‫زیر‬ ‫فرمان‬ ‫از‬ ‫پروژه‬ ‫تاریخچه‬:  git commit ‫پس‬‫شما‬ ‫از‬ ‫و‬ ‫میشود‬ ‫باز‬ ‫متن‬ ‫ویرایشگر‬ ‫یک‬ ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫از‬ ‫شد‬ ‫خواهد‬ ‫درخواست‬ ‫کامیت‬ ‫عنوان‬.‫کامیت‬ ‫توضیحات‬ ‫و‬ ‫عنوان‬ ‫فرم‬ ‫باشد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫باید‬: <commit summary in 50 characters or less. > < blank line > < detailed description of changes in this commit. > git‫خروجی‬ ‫بندی‬ ‫قالب‬ ‫برای‬ ‫اول‬ ‫خط‬ ‫از‬log،‫و‬ ‫میل‬ ‫ارسال‬... ‫میکند‬ ‫استفاده‬.‫باشد‬ ‫خالصه‬ ‫و‬ ‫کوتاه‬ ‫است‬ ‫بهتر‬ ‫بنابراین‬.‫اگر‬ ‫بدان‬ ‫این‬ ‫بنویسید‬ ‫را‬ ‫تغییرات‬ ‫کلیه‬ ‫خالصه‬ ‫صورت‬ ‫به‬ ‫که‬ ‫نتوانستید‬ ‫که‬ ‫است‬ ‫معنی‬commit‫در‬‫باید‬ ‫و‬ ‫هست‬ ‫نامرتبط‬ ‫تغییرات‬ ‫بردارنده‬ ‫یک‬ ‫قالب‬ ‫در‬ ‫و‬ ‫کنید‬ ‫بندی‬ ‫گروه‬ ‫را‬ ‫یکدیگر‬ ‫با‬ ‫مرتبط‬ ‫تغییرات‬ ‫کنید‬ ‫ثبت‬ ‫را‬ ‫گروه‬ ‫هر‬ ‫کامیت‬.‫خالی‬ ‫خط‬ ‫یک‬ ‫کامیت‬ ‫خالصه‬ ‫از‬ ‫بعد‬ ‫و‬ ‫تغییرات‬ ‫اعمال‬ ‫دالیل‬ ‫مانند‬ ‫تغییرات‬ ‫جزئیات‬ ‫سپس‬ ‫و‬ ‫بگذارید‬ 10
  • 11. ‫کامیتها‬ ‫به‬ ‫مربوط‬ ‫فرمانهای‬stage‫و‬‫پروژه‬ ‫پوشه‬:git add, git rm, git status ‫کامیتها‬ ‫تاریخچه‬ ‫به‬ ‫مربوط‬ ‫فرمانهای‬:git commit, git log 11
  • 12. ‫کامیتها‬ ‫به‬ ‫برچسب‬ ‫الصاق‬ ‫یا‬ ‫برچسبها‬ ‫از‬Tag‫ایجاد‬ ‫برای‬ ‫ها‬‫گر‬‫اشاره‬‫خاص‬ ‫کامیتهای‬ ‫به‬ ‫های‬ ‫پروژه‬ ‫در‬ ‫عموم‬ ‫برای‬ ‫پروژه‬ ‫انتشار‬ ‫کامیت‬ ‫مانند‬open source ‫میتوان‬‫کرد‬ ‫استفاده‬.‫از‬ ‫کامیتها‬ ‫به‬ ‫برچسب‬ ‫الصاق‬ ‫برای‬‫فرمان‬git tag‫به‬‫میشود‬ ‫استفاده‬ ‫زیر‬ ‫صورت‬:  git tag -a v1.0 -m "Stable release" ‫سویچ‬-a‫کند‬ ‫ایجاد‬ ‫پیغام‬ ‫با‬ ‫برچسب‬ ‫یک‬ ‫که‬ ‫میدهد‬ ‫فرمان‬ ‫گیت‬ ‫به‬ ‫سویچ‬ ‫با‬ ‫پیغام‬ ‫که‬-m‫مشخص‬‫میشود‬.‫سویچ‬ ‫بدون‬ ‫باال‬ ‫فرمان‬ ‫اجرای‬ ‫میدهد‬ ‫ارائه‬ ‫را‬ ‫موجود‬ ‫های‬ ‫تگ‬ ‫از‬ ‫فهرستی‬ ‫ها‬:  git tag 12
  • 13. ‫پوشه‬ ‫در‬ ‫تغییرات‬ ‫بازگرداندن‬ ‫پروژه‬ ‫از‬‫شما‬ ‫هستند‬ ‫بازگشت‬ ‫قابل‬ ‫شما‬ ‫پروژه‬ ‫از‬ ‫نسخه‬ ‫هر‬ ‫که‬ ‫آنجا‬ ‫اقدام‬ ‫کنید‬ ‫وارد‬ ‫آسیبی‬ ‫پروژه‬ ‫به‬ ‫اینکه‬ ‫بدون‬ ‫آزادانه‬ ‫میتوانید‬ ‫نمایید‬ ‫پروژه‬ ‫روی‬ ‫بر‬ ‫جدید‬ ‫قابلیتهای‬ ‫آزمایش‬ ‫و‬ ‫تحقیق‬ ‫به‬.‫اما‬ ‫روی‬ ‫بر‬ ‫گوناگون‬ ‫تکنیکهای‬ ‫آزمایش‬ ً‫صرفا‬ ‫و‬ ‫هدف‬ ‫بدون‬ ‫نویسی‬ ‫کد‬ ‫و‬ ‫نامنظم‬ ‫کدهای‬ ‫با‬ ‫پروژه‬ ‫پوشه‬ ‫شدن‬ ‫شلوغ‬ ‫به‬ ‫منجر‬ ‫میتواند‬ ‫پروژه‬ ‫شود‬ ‫نامرتبط‬.‫میتوانید‬ ‫آمد‬ ‫پیش‬ ‫شما‬ ‫برای‬ ‫مشکل‬ ‫این‬ ‫که‬ ‫زمانی‬ ‫کنید‬ ‫اجرا‬ ‫را‬ ‫زیر‬ ‫فرمانهای‬:  git reset --hard HEAD  git clean -f ‫به‬ ‫شما‬ ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫با‬Git‫فرمان‬‫پوشه‬ ‫محتویات‬ ‫که‬ ‫میدهید‬ ‫به‬ ‫که‬ ‫کامیت‬ ‫آخرین‬ ‫از‬ ‫پس‬ ‫که‬ ‫حالتی‬ ‫به‬ ‫را‬ ‫پروژه‬‫آن‬HEAD‫نیز‬ ‫برگرداند‬ ‫میشود‬ ‫گفته‬.‫را‬ ‫نشده‬ ‫کامیت‬ ‫تغییرات‬ ‫تمامی‬ ‫فرمان‬ ‫این‬ ‫ردگیری‬ ‫دیگر‬ ‫را‬ ‫نشده‬ ‫کامیت‬ ‫اما‬ ‫جدید‬ ‫فایلهای‬ ‫و‬ ‫میکند‬ ‫حذف‬ ‫کند‬‫نمی‬.‫دوم‬ ‫فرمان‬ ‫نمیشوند‬ ‫ردگیری‬ ‫دیگر‬ ‫که‬ ‫فایلهایی‬ ‫حذف‬ ‫برای‬ ‫میکنیم‬ ‫اجرا‬ ‫را‬.‫که‬ ‫آنجا‬ ‫از‬Git‫خیلی‬‫حذف‬ ‫به‬ ‫اقدام‬ ‫احتیاط‬ ‫با‬ 13
  • 14. ‫خاص‬ ‫فایل‬ ‫یک‬ ‫بازگرداندن‬ ‫امکان‬‫به‬ ‫آن‬ ‫وضعیت‬ ‫برگرداندن‬ ‫و‬ ‫خاص‬ ‫فایل‬ ‫یک‬ ‫دادن‬ ‫قرار‬ ‫هدف‬ ‫کامیت‬ ‫آخرین‬‫ثبت‬‫در‬ ‫نیز‬ ‫شده‬Git‫باشد‬‫می‬ ‫موجود‬‫است‬ ‫کافی‬ ‫تنها‬ ‫کنید‬ ‫اجرا‬ ‫را‬ ‫زیر‬ ‫فرمان‬ ‫که‬:  git checkout HEAD < file > ‫شما‬ ‫و‬ ‫داشت‬ ‫نخواهد‬ ‫پروژه‬ ‫تاریخچه‬ ‫روی‬ ‫بر‬ ‫تاثیری‬ ‫فرمان‬ ‫این‬ ‫به‬ ‫میتوانید‬‫جای‬HEAD‫از‬‫برای‬ ‫تگ‬ ‫یا‬ ‫و‬ ‫شاخه‬ ،‫کامیت‬ ‫شناسه‬ ‫استفاده‬ ‫کامیت‬ ‫آن‬ ‫به‬ ‫فایل‬ ‫برگرداندن‬ ‫و‬ ‫نظر‬ ‫مورد‬ ‫کامیت‬ ‫شناسایی‬ ‫کنید‬. 14
  • 15. ‫در‬ ‫تغییرات‬ ‫بازگرداندن‬Stage ‫اگر‬‫در‬ ‫خود‬ ‫آینده‬ ‫کامیت‬ ‫کردن‬ ‫تنظیم‬ ‫حین‬ ‫در‬Stage‫به‬‫یک‬ ‫اشتباه‬ ‫زیر‬ ‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫میتوانید‬ ‫دادید‬ ‫قرار‬ ‫را‬ ‫اضافه‬ ‫فایل‬ ‫از‬ ‫را‬ ‫آن‬Stage‫کنید‬ ‫خارج‬:  git reset HEAD < file > ‫از‬ ‫فرمان‬ ‫این‬ ‫در‬ ‫میکنید‬ ‫مالحظه‬ ‫که‬ ‫همانطور‬--hard‫استفاده‬‫نشده‬ ‫به‬ ‫این‬ ‫که‬ ‫است‬Git‫فرمان‬‫نداشته‬ ‫پروژه‬ ‫پوشه‬ ‫با‬ ‫کاری‬ ‫که‬ ‫میدهد‬ ‫از‬ ‫را‬ ‫فایل‬ ‫تنها‬ ‫و‬ ‫باشد‬Stage‫خارج‬‫کند‬.‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ ‫سوئیچ‬--hard‫تغییرات‬‫در‬ ‫هم‬ ‫را‬Stage‫و‬‫پروژه‬ ‫پوشه‬ ‫در‬ ‫هم‬ ‫برمیگرداند‬. 15
  • 16. ‫ها‬ ‫کامیت‬ ‫بازگرداندن‬ ‫به‬‫خنثی‬ ‫را‬ ‫کامیت‬ ‫یک‬ ‫از‬ ‫حاصل‬ ‫تغییرات‬ ‫میتوانید‬ ‫شما‬ ‫صورت‬ ‫دو‬ ‫کنید‬.‫یک‬ ‫ایجاد‬ ‫با‬ ‫دوم‬ ‫و‬ ‫پروژه‬ ‫تارخچه‬ ‫از‬ ‫کامیت‬ ‫حذف‬ ‫با‬ ‫اول‬ ‫میکند‬ ‫خنثی‬ ‫را‬ ‫قبلی‬ ‫کامیت‬ ‫تغییرات‬ ‫که‬ ‫جدید‬ ‫کامیت‬.‫دوم‬ ‫روش‬ ‫که‬ ‫میباشد‬ ‫شده‬ ‫توصیه‬ ‫روش‬. ‫حذف‬‫کامیت‬ ‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬reset‫به‬ ‫را‬ ‫کامیت‬ ‫آخرین‬ ‫میتوانید‬ ‫شما‬ ‫کنید‬ ‫حذف‬ ‫زیر‬ ‫صورت‬:  git reset HEAD~1 HEAD~1‫مشخص‬‫کامیت‬ ‫آخرین‬ ‫از‬ ‫قبل‬ ‫کامیت‬ ‫اولین‬ ‫به‬ ‫که‬ ‫میکند‬ ‫شد‬ ‫خواهد‬ ‫برگشت‬.‫کامیت‬ ‫فرمان‬ ‫این‬ ‫لذا‬HEAD‫را‬‫کرد‬ ‫خواهد‬ ‫حذف‬. HEAD~2‫کامیت‬‫خواهد‬ ‫حذف‬ ‫را‬ ‫آخر‬ ‫به‬ ‫مانده‬ ‫یکی‬ ‫کامیت‬ ‫و‬ ‫آخر‬ ‫کرد‬.‫دستور‬ ‫اجرای‬ ‫با‬reset‫شما‬‫تاریخچه‬ ‫در‬ ‫کامیت‬ ‫چند‬ ‫یا‬ ‫یک‬ ‫گشت‬ ‫خواهید‬ ‫باز‬ ‫عقب‬ ‫به‬ ‫پروژه‬. 16
  • 17. ‫کننده‬ ‫خنثی‬ ‫کامیت‬ ‫ایجاد‬ ‫برای‬‫از‬ ‫ناشی‬ ‫مشکالت‬ ‫از‬ ‫جلوگیری‬reset‫کردن‬‫است‬ ‫بهتر‬ ‫کامیت‬ ‫یک‬ ‫از‬ ‫باید‬ ‫منظور‬ ‫این‬ ‫برای‬ ‫که‬ ‫کنید‬ ‫ایجاد‬ ‫کننده‬ ‫خنثی‬ ‫کامیت‬ ‫یک‬ ‫که‬ ‫کنیم‬ ‫استفاده‬ ‫زیر‬ ‫فرمان‬:  git revert < commit-id > ‫ایجاد‬ ‫آنرا‬ ‫عکس‬ ‫و‬ ‫میکند‬ ‫بررسی‬ ‫را‬ ‫شده‬ ‫مشخص‬ ‫کامیت‬ ‫فرمان‬ ‫این‬ ‫میکند‬.‫برای‬Git‫عادی‬ ‫کامیت‬ ‫یک‬ ‫این‬ ‫نویسان‬ ‫برنامه‬ ‫دیگر‬ ‫و‬ ‫برمیگرداند‬ ‫را‬ ‫شده‬ ‫مشخص‬ ‫کامیت‬ ‫در‬ ‫موجود‬ ‫تغییرات‬ ‫فقط‬ ‫میباشد‬. 17
  • 18. ‫کامیتها‬ ‫اصالح‬ ‫شما‬‫با‬ ‫را‬ ‫آنها‬ ‫میتوانید‬ ‫کامیتها‬ ‫برگرداندن‬ ‫یا‬ ‫و‬ ‫حذف‬ ‫بر‬ ‫عالوه‬ ‫کنید‬ ‫اصالح‬ ‫زیر‬ ‫فرمان‬ ‫از‬ ‫استفاده‬.‫را‬ ‫فایل‬ ‫چند‬ ‫یا‬ ‫یک‬ ‫اگر‬ ً‫مثال‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫کنید‬ ‫اضافه‬ ‫کامیت‬ ‫یک‬ ‫به‬ ‫که‬ ‫اید‬ ‫کرده‬ ‫فراموش‬ ‫کنید‬ ‫اضافه‬ ‫کامیت‬ ‫به‬ ‫را‬ ‫آنها‬ ‫میتوانید‬ ‫فرمان‬.‫داشته‬ ‫توجه‬ ‫خواهد‬ ‫پروژه‬ ‫تاریخچه‬ ‫در‬ ‫تغییرات‬ ‫باعث‬ ‫نیز‬ ‫فرمان‬ ‫این‬ ‫که‬ ‫باشید‬ ‫شد‬.  git commit –amend ‫کامیت‬ ‫به‬ ‫را‬ ‫جدید‬ ‫تغییرات‬ ‫جدید‬ ‫کامیت‬ ‫یک‬ ‫ثبت‬ ‫جای‬ ‫به‬ ‫فرمان‬ ‫این‬ ‫میکند‬ ‫اضافه‬ ‫قبلی‬. 18
  • 19. ‫ها‬‫شاخه‬ ‫میکنند‬ ‫برابر‬ ‫چند‬ ‫را‬ ‫کامیتها‬ ‫در‬ ‫شده‬ ‫ارائه‬ ‫قابلیتهای‬ ‫ها‬ ‫شاخه‬. ‫را‬ ‫پروژه‬ ‫تاریخچه‬ ‫آنها‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫میتوانند‬ ‫نویسان‬ ‫برنامه‬ fork‫کنند‬‫به‬ ‫پروژه‬ ‫اصلی‬ ‫شاخه‬ ‫از‬ ‫جدا‬ ‫کامال‬ ‫جدید‬ ‫شاخه‬ ‫یک‬ ‫و‬ ‫محدوده‬ ،‫پروژه‬ ‫پوشه‬ ‫همراه‬stage‫و‬‫ایجاد‬ ‫مجزا‬ ‫پروژه‬ ‫تاریخچه‬ ‫کنند‬. ‫بدون‬ ‫خاطر‬ ‫آسودگی‬ ‫با‬ ‫نویسان‬ ‫برنامه‬ ‫زدن‬ ‫شاخه‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫گوناگون‬ ‫های‬ ‫نسخه‬ ‫روی‬ ‫بر‬ ‫میتوانند‬ ‫اصلی‬ ‫پروژه‬ ‫به‬ ‫رساندن‬ ‫آسیب‬ ‫کار‬ ‫پروژه‬ ‫گوناگون‬ ‫قابلیتهای‬ ‫روی‬ ‫بر‬ ‫موازی‬ ‫صورت‬ ‫به‬ ‫پروژه‬ ‫کنند‬.‫قابلیت‬Fork‫و‬‫گوناگون‬ ‫بخشهای‬ ‫روی‬ ‫بر‬ ‫موازی‬ ‫صورت‬ ‫به‬ ‫کار‬ ‫در‬ ‫تیمی‬ ‫کار‬ ‫قابلیتهای‬ ‫از‬ ‫مهمی‬ ‫بخش‬ ‫پروژه‬GIT‫میباشد‬. ‫در‬ ‫ها‬ ‫شاخه‬ ‫با‬ ‫مرتبط‬ ‫عملیات‬ ‫کلیه‬Git‫در‬‫خالصه‬ ‫فرمان‬ ‫چند‬ ‫میشوند‬.‫فرمان‬ ‫مثال‬ ‫طور‬ ‫به‬git branch‫برای‬‫و‬ ‫ایجاد‬ ،‫گیری‬ ‫فهرست‬ ‫میشود‬ ‫استفاده‬ ‫ها‬ ‫شاخه‬ ‫حذف‬ ‫یا‬. ‫شاخه‬ ‫کردن‬ ‫فهرست‬‫ها‬ ‫زیر‬ ‫فرمان‬ ‫از‬ ‫پروژه‬ ‫در‬ ‫موجود‬ ‫های‬ ‫شاخه‬ ‫فهرست‬ ‫مشاهده‬ ‫برای‬ 19
  • 20. ‫ها‬‫شاخه‬ ‫ارائه‬ ‫را‬ ‫پروژه‬ ‫در‬ ‫موجود‬ ‫های‬ ‫شاخه‬ ‫کلیه‬ ‫فهرست‬ ‫فرمان‬ ‫این‬ ‫خروجی‬ ‫حاضر‬ ‫حال‬ ‫در‬ ‫که‬ ‫ای‬ ‫شاخه‬ ‫کنار‬ ‫در‬ ‫همچنین‬ ‫و‬ ‫میدهد‬checked out ‫شده‬‫میدهد‬ ‫قرار‬ ‫ستاره‬ ‫یک‬ ‫است‬.‫با‬ ‫رابطه‬ ‫در‬checked out‫در‬ ‫داد‬ ‫خواهیم‬ ‫توضیح‬ ‫ادامه‬. *master some-feature quick-bug-fix ‫شاخه‬master‫شاخه‬‫در‬ ‫اصلی‬ ‫و‬ ‫فرض‬ ‫پیش‬Git‫میباشد‬‫اولین‬ ‫با‬ ‫که‬ ‫هر‬ ‫در‬ ‫کامیت‬repository‫ایجاد‬‫میشود‬.‫این‬ ‫از‬ ‫نویسان‬ ‫برنامه‬ ‫اکثر‬ ‫شاخه‬ ‫تمامی‬ ‫که‬ ‫میکنند‬ ‫یاد‬ ‫پروژه‬ ‫تولید‬ ‫اصلی‬ ‫خط‬ ‫عنوان‬ ‫به‬ ‫شاخه‬ ‫میگیرند‬ ‫ریشه‬ ‫شاخه‬ ‫این‬ ‫از‬ ‫دیگر‬ ‫های‬. 20
  • 21. ‫شاخه‬ ‫ایجاد‬ ‫برای‬‫فرمان‬ ‫همان‬ ‫از‬ ‫جدید‬ ‫شاخه‬ ‫ساخت‬git branch‫استفاده‬‫با‬ ‫میشود‬ ‫پاس‬ ‫فرمان‬ ‫به‬ ‫را‬ ‫شاخه‬ ‫نام‬ ‫آرگومان‬ ‫بار‬ ‫این‬ ‫که‬ ‫تفاوت‬ ‫این‬ ‫شود‬ ‫ساخته‬ ‫جدید‬ ‫شاخه‬ ‫تا‬ ‫میدهیم‬:  git branch < name > ‫یا‬ ‫گر‬ ‫اشاره‬ ‫یک‬ ‫فرمان‬ ‫این‬ ‫اجرای‬pointer‫جدید‬‫کامیت‬ ‫به‬HEAD ‫ایجاد‬‫شاخه‬ ‫در‬ ‫همچنان‬ ‫شما‬ ‫و‬ ‫نمیکند‬ ‫سویچ‬ ‫آن‬ ‫روی‬ ‫بر‬ ‫اما‬ ‫میکند‬ master‫هستید‬.‫فرمان‬ ‫از‬ ‫باید‬ ‫شما‬ ‫جدید‬ ‫شاخه‬ ‫روی‬ ‫بر‬ ‫سویچ‬ ‫برای‬ git checkout‫استفاده‬‫کنید‬.‫جدید‬ ‫شاخه‬ ‫ایجاد‬ ‫از‬ ‫بعد‬ ‫بالفاصله‬ repository‫شما‬‫آید‬ ‫می‬ ‫در‬ ‫زیر‬ ‫صورت‬ ‫به‬. 21
  • 22. ‫شاخه‬ ‫ایجاد‬ ‫یا‬ ‫اصلی‬ ‫شاخه‬ ‫میکنید‬ ‫مالحظه‬ ‫که‬ ‫همانطور‬master‫و‬‫شاخه‬ ‫همچنین‬ ‫میکنند‬ ‫اشاره‬ ‫کامیت‬ ‫یک‬ ‫به‬ ‫دو‬ ‫هر‬ ‫کردید‬ ‫ایجاد‬ ‫که‬ ‫جدیدی‬.‫هر‬ ‫اما‬ ‫اصلی‬ ‫شاخه‬ ‫از‬ ‫کنید‬ ‫ثبت‬ ‫جدید‬ ‫شاخه‬ ‫این‬ ‫در‬ ‫شما‬ ‫که‬ ‫جدیدی‬ ‫کامیت‬ ‫بود‬ ‫خواهد‬ ‫جدا‬.‫کار‬ ‫بنیان‬ ‫شد‬ ‫اشاره‬ ‫که‬ ‫همانطور‬ ‫امر‬ ‫همین‬ ‫که‬ ‫در‬ ‫تیمی‬Git‫میباشد‬‫بر‬ ‫اینکه‬ ‫بدون‬ ‫میتوانید‬ ‫شما‬ ‫که‬ ‫طوری‬ ‫به‬ ‫صورت‬ ‫به‬ ‫باشید‬ ‫داشته‬ ‫تاثیری‬ ‫پروژه‬ ‫اصلی‬ ‫سازی‬ ‫پیاده‬ ‫روند‬ ‫کنید‬ ‫کار‬ ‫پروژه‬ ‫مجزا‬ ‫قابلیتهای‬ ‫دیگر‬ ‫روی‬ ‫بر‬ ‫جداگانه‬.‫طور‬ ‫به‬ ‫شاخه‬ ‫در‬ ‫شما‬ ‫اگر‬ ‫مثال‬some-feature‫کار‬‫جدید‬ ‫کامیت‬ ‫یک‬ ‫و‬ ‫میکنید‬ ‫کنید‬ ‫ثبت‬‫تاریخچه‬‫میشود‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫پروژه‬: ‫کامیت‬HEAD‫ایجاد‬‫است‬ ‫شده‬ ‫مشخص‬ ‫قرمز‬ ‫رنگ‬ ‫با‬ ‫تصویر‬ ‫در‬ ‫که‬ ‫شده‬ ‫در‬ ‫کامیت‬ ‫این‬ ‫و‬ ‫میباشد‬ ‫شاخه‬ ‫در‬ ‫کامیت‬ ‫آخرین‬log‫مربوط‬‫شاخه‬ ‫به‬ master‫که‬ ‫صورتی‬ ‫در‬ ‫همچنین‬ ‫شد‬ ‫نخواهد‬ ‫ظاهر‬‫شاخه‬master‫را‬‫شما‬ check out‫کنید‬‫ایجاد‬ ‫فرعی‬ ‫شاخه‬ ‫پروژه‬ ‫پوشه‬ ‫در‬ ‫که‬ ‫تغییراتی‬ ‫پروژه‬ ‫پوشه‬ ‫در‬ ‫اید‬ ‫کرده‬master‫ظاهر‬‫شد‬ ‫نخواهند‬. 22
  • 23. ‫ها‬ ‫شاخه‬ ‫حذف‬ ‫شما‬‫سویچ‬ ‫از‬ ‫استفاده‬ ‫با‬-d‫در‬‫فرمان‬git branch‫و‬‫با‬ ‫همچنین‬ ‫کنید‬ ‫حذف‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫شاخه‬ ‫میتوانید‬ ‫شاخه‬ ‫نام‬ ‫ارائه‬:  git branch -d <name> ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬Git‫اجازه‬‫اصلی‬ ‫شاخه‬ ‫با‬ ‫که‬ ‫هایی‬ ‫شاخه‬ ‫حذف‬ merge‫نشده‬‫نمیدهد‬ ‫را‬ ‫اند‬.‫انجام‬ ‫کارهای‬ ‫حفظ‬ ‫سبب‬ ‫به‬ ‫این‬ ‫و‬ ‫میباشد‬ ‫پروژه‬ ‫روی‬ ‫بر‬ ‫شده‬.‫اینکه‬ ‫برای‬Git‫را‬‫حذف‬ ‫به‬ ‫مجبور‬ ‫های‬ ‫شاخه‬merge‫نشده‬‫سویچ‬ ‫از‬ ‫باید‬ ‫کنید‬-D‫بجای‬-d‫استفاده‬ ‫کنیم‬.  git branch -D <name> ‫شاخه‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫دقت‬ ‫فرمان‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫در‬merge‫نشده‬ ‫شد‬ ‫خواهد‬ ‫حذف‬. 23
  • 24. Check out‫کردن‬‫ها‬ ‫شاخه‬ ً‫مطمئنا‬‫بی‬ ‫آنها‬ ‫بین‬ ‫کردن‬ ‫سویچ‬ ‫قابلیت‬ ‫بدون‬ ‫ها‬ ‫شاخه‬ ‫ایجاد‬ ‫بود‬ ‫خواهد‬ ‫فایده‬.‫فرمان‬ ‫از‬ ‫مختلف‬ ‫های‬ ‫شاخه‬ ‫بین‬ ‫کردن‬ ‫سویچ‬ ‫برای‬ check out‫به‬‫میشود‬ ‫استفاده‬ ‫زیر‬ ‫صورت‬:  git checkout <branch> ‫به‬ ‫توجه‬ ‫با‬ ‫پروژه‬ ‫پوشه‬ ‫جدید‬ ‫شاخه‬ ‫روی‬ ‫کردن‬ ‫سویچ‬ ‫از‬ ‫بعد‬ ‫میشود‬ ‫رسانی‬ ‫روز‬ ‫به‬ ‫جاری‬ ‫شاخه‬ ‫کامیتهای‬.‫همچنین‬HEAD‫نیز‬‫به‬ ‫در‬ ‫آینده‬ ‫در‬ ‫که‬ ‫کامیتهایی‬ ‫تمامی‬ ‫و‬ ‫کرد‬ ‫خواهد‬ ‫اشاره‬ ‫جدید‬ ‫شاخه‬ ‫در‬ ‫و‬ ‫میشوند‬ ‫ثبت‬ ‫شاخه‬ ‫همان‬ ‫در‬ ‫تنها‬ ‫میشوند‬ ‫ثبت‬ ‫جاری‬ ‫شاخه‬ ‫هستند‬ ‫دسترس‬.‫کردن‬ ‫سویچ‬ ‫به‬ ‫را‬ ‫ها‬ ‫شاخه‬ ‫بین‬ ‫کردن‬ ‫سویچ‬ ‫میتوان‬ ‫حالت‬ ‫به‬ ‫برگشتن‬ ‫که‬ ‫تفاوت‬ ‫این‬ ‫با‬ ‫کرد‬ ‫تشبیه‬ ‫مختلف‬ ‫های‬ ‫پوشه‬ ‫بین‬ ‫بود‬ ‫خواهد‬ ‫تر‬ ‫ساده‬ ‫بسیار‬ ‫اولیه‬. 24
  • 25. Check out‫کردن‬‫ها‬ ‫شاخه‬ ‫تمامی‬ ‫ثبت‬ ‫از‬ ‫جدید‬ ‫شاخه‬ ‫ایجاد‬ ‫از‬ ‫قبل‬ ‫همیشه‬ ‫که‬ ‫میشود‬ ‫توصیه‬ ‫باز‬ ‫امکان‬ ‫صورت‬ ‫این‬ ‫غیر‬ ‫در‬ ‫شویم‬ ‫مطمئن‬ ‫اصلی‬ ‫شاخه‬ ‫در‬ ‫تغییرات‬ ‫یا‬ ‫تغییرات‬ ‫نویسی‬overwrite‫تغییرات‬‫اجرای‬ ‫حین‬git checkout ‫میباشد‬. ‫کد‬ ‫و‬ ‫تحقیق‬ ‫به‬ ‫میتوانید‬ ‫آزادانه‬ ‫شما‬ ‫جدید‬ ‫شاخه‬ ‫ایجاد‬ ‫از‬ ‫بعد‬ ‫آنجا‬ ‫از‬ ‫همچنین‬ ‫بپردازید‬ ‫پروژه‬ ‫جدید‬ ‫قابلیتهای‬ ‫روی‬ ‫بر‬ ‫نویسی‬ ‫روند‬ ‫میتوانید‬ ‫شما‬ ‫دارد‬ ‫را‬ ‫خود‬ ‫به‬ ‫منحصر‬ ‫تاریخچه‬ ‫شاخه‬ ‫هر‬ ‫که‬ ‫با‬ ‫را‬ ‫شاخه‬ ‫سازی‬ ‫پیاده‬‫دستورات‬git add‫و‬git commit‫مورد‬ ً‫قبال‬ ‫که‬ ‫ثبت‬ ‫اصلی‬ ‫شاخه‬ ‫روی‬ ‫بر‬ ‫تاثیر‬ ‫بدون‬ ‫را‬ ،‫اند‬ ‫گرفته‬ ‫قرار‬ ‫بررسی‬ ‫کنید‬. 25
  • 26. ‫ها‬‫شاخه‬ ‫کردن‬ ‫ترکیب‬ ‫ها‬ ‫شاخه‬ ‫ترکیب‬ ‫دیگر‬ ‫شاخه‬ ‫با‬ ‫شاخه‬ ‫یک‬ ‫کامیتهای‬ ‫ترکیب‬ ‫فرآیند‬ ‫به‬ ‫یا‬merge‫گفته‬‫میشود‬.‫وجود‬ ‫ها‬ ‫شاخه‬ ‫ترکیب‬ ‫برای‬ ‫بسیاری‬ ‫های‬ ‫راه‬ ‫های‬ ‫شاخه‬ ‫بین‬ ‫اطالعات‬ ‫گذاری‬ ‫اشتراک‬ ‫به‬ ‫آنها‬ ‫همه‬ ‫هدف‬ ‫اما‬ ‫دارند‬ ‫میباشد‬ ‫گوناگون‬.‫مهمترین‬ ‫از‬ ‫یکی‬ ‫ها‬ ‫شاخه‬ ‫ترکیب‬ ‫دلیل‬ ‫همین‬ ‫به‬ ‫که‬ ‫قابلیتهای‬Git‫میباشد‬. ‫نامهای‬ ‫با‬ ‫دارند‬ ‫وجود‬ ‫های‬ ‫شاخه‬ ‫ترکیب‬ ‫برای‬ ‫رایج‬ ‫روش‬ ‫دو‬: Fast-Forward merge‫و‬3-Way merge ‫در‬‫فرمان‬ ‫از‬ ‫روشها‬ ‫این‬ ‫دو‬ ‫هر‬git merge‫استفاده‬‫میشود‬.‫متد‬ ‫اما‬ ‫ساختار‬ ‫روی‬ ‫از‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫ها‬ ‫شاخه‬ ‫ترکیب‬ ‫برای‬ ‫استفاده‬ ‫مورد‬ ‫شد‬ ‫خواهد‬ ‫تعیین‬ ‫آن‬ ‫های‬ ‫شاخه‬ ‫و‬ ‫پروژه‬ ‫تاریخچه‬.‫شاخه‬ ‫روش‬ ‫دو‬ ‫هر‬ ‫در‬ ‫شود‬ ‫الصاق‬ ‫هدف‬ ‫یا‬ ‫اصلی‬ ‫شاخه‬ ‫به‬ ‫است‬ ‫قرار‬ ‫که‬ ‫فرعی‬‫باید‬checked out ‫شده‬‫ماند‬ ‫خواهد‬ ‫باقی‬ ‫تغییر‬ ‫بدون‬ ‫اصلی‬ ‫شاخه‬ ‫و‬ ‫باشد‬.‫به‬ ‫ادامه‬ ‫در‬ ‫زیر‬ ‫فرمان‬ ‫با‬ ‫ها‬ ‫شاخه‬ ‫ترکیب‬ ‫برای‬ ‫موجود‬ ‫سناریو‬ ‫دو‬ ‫بررسی‬ ‫میپردازیم‬:  git checkout master - git merge some-feature ‫شاخه‬ ‫که‬ ‫میشود‬ ‫باعث‬ ‫باال‬ ‫فرمان‬ ‫دو‬ ‫اجرای‬ ‫شد‬ ‫اشاره‬ ‫که‬ ‫همانطور‬ some-feature‫به‬‫اصلی‬ ‫شاخه‬‫یا‬master‫اضافه‬‫شود‬.‫شما‬ ‫اوقات‬ ‫بیشتر‬ 26
  • 27. Fast-Forward Merge ‫ایجاد‬ ‫جدید‬ ‫شاخه‬ ‫یک‬ ‫ما‬ ‫سناریو‬ ‫این‬ ‫در‬ ‫پروژه‬ ‫به‬ ‫جدید‬ ‫قابلیت‬ ‫یک‬ ‫تا‬ ‫ایم‬ ‫کرده‬ ‫شاخه‬ ‫این‬ ‫در‬ ‫کامیت‬ ‫دو‬ ‫و‬ ‫کنیم‬ ‫اضافه‬ ‫که‬ ‫ایم‬ ‫آماده‬ ‫االن‬ ‫و‬ ‫ایم‬ ‫کرده‬ ‫ثبت‬ ‫جدید‬ ‫اصلی‬ ‫شاخه‬ ‫به‬ ‫شده‬ ‫نویسی‬ ‫کد‬ ‫جدید‬ ‫قابلیت‬ ‫شود‬ ‫اضافه‬ ‫پروژه‬.‫دو‬ ‫اینکه‬ ‫جای‬ ‫به‬ ‫اصلی‬ ‫شاخه‬ ‫در‬ ‫دوباره‬ ‫را‬ ‫شاخه‬ ‫کامیت‬ ‫شوند‬ ‫ایجاد‬Git‫شاخه‬ ‫گر‬ ‫اشاره‬master‫را‬ ‫ابتدای‬ ‫به‬‫شاخه‬some-feature‫میبرد‬. ‫شود‬ ‫ایجاد‬ ‫ذهن‬ ‫در‬ ‫سوال‬ ‫این‬ ‫شاید‬ ‫شاخه‬ ‫کامیت‬ ‫دو‬ ‫اول‬ ‫از‬ ‫چرا‬ ‫که‬ ‫ثبت‬ ‫اصلی‬ ‫شاخه‬ ‫در‬ ‫را‬ ‫فرعی‬ ‫ایجاد‬ ‫با‬ ‫که‬ ‫هست‬ ‫این‬ ‫علت‬ ‫نکردیم؟‬ ‫برای‬ ‫امن‬ ‫محیط‬ ‫یک‬ ‫شما‬ ‫جدید‬ ‫شاخه‬ ‫جدید‬ ‫قابلیتهای‬ ‫نویسی‬ ‫کد‬ ‫توسعه‬ ‫اگر‬ ‫که‬ ‫اید‬ ‫کرده‬ ‫ایجاد‬ ‫پروژه‬ ‫نیازی‬ ‫نرسند‬ ‫نتیجه‬ ‫به‬ ‫شما‬ ‫تالشهای‬ ‫عقب‬ ‫به‬ ‫را‬ ‫پروژه‬ ‫کل‬ ‫که‬ ‫نیست‬ ‫که‬ ‫است‬ ‫کافی‬ ‫تنها‬ ‫و‬ ‫برگردانید‬ ‫و‬ ‫ناتمام‬ ‫کدهای‬ ‫حاوی‬ ‫جدید‬ ‫شاخه‬ ‫کنید‬ ‫پاک‬ ‫را‬ ‫اشتباه‬. 27
  • 28. 3-Way Merge ‫همیشه‬‫نیستند‬ ‫قبل‬ ‫مثال‬ ‫سادگی‬ ‫به‬ ‫ترکیبها‬.‫باشید‬ ‫داشته‬ ‫یاد‬ ‫به‬ ‫در‬ ‫ها‬ ‫شاخه‬ ‫اصلی‬ ‫مزیت‬ ‫که‬Git‫قابلیت‬‫بخشهای‬ ‫نویسی‬ ‫کد‬ ‫و‬ ‫توسعه‬ ‫میباشد‬ ‫موازی‬ ‫صورت‬ ‫به‬ ‫پروژه‬ ‫مختلف‬.‫اوقات‬ ‫بیشتر‬ ‫خاطر‬ ‫همین‬ ‫به‬ ‫میکنیم‬ ‫برخورد‬ ‫زیر‬ ‫سناریوی‬ ‫به‬ ‫مانند‬ ‫سناریو‬ ‫این‬‫سناریو‬Fast- Forward‫شروع‬‫حین‬ ‫در‬ ‫اما‬ ‫شد‬ ‫چند‬ ‫یا‬ ‫یک‬ ‫فرعی‬ ‫شاخه‬ ‫تکمیل‬ ‫اصلی‬ ‫شاخه‬ ‫به‬ ‫جدید‬ ‫کامیت‬ ‫است‬ ‫شده‬ ‫اضافه‬.‫چنین‬ ‫در‬ ‫فرعی‬ ‫شاخه‬ ‫ترکیب‬ ‫عمل‬ ‫موقعیتی‬ ‫طرفه‬ ‫سه‬ ‫ترکیب‬ ‫را‬ ‫اصلی‬ ‫با‬ ‫دستورات‬ ‫همان‬ ‫با‬ ‫که‬ ‫مینامند‬ ‫ترکیب‬Fast-Forward‫پیاده‬‫سازی‬ ‫میشود‬. ‫ه‬‫مانطور‬‫میکنید‬ ‫مشاهده‬ ‫تصویر‬ ‫در‬ ‫که‬ Git‫نمیتواند‬‫روش‬ ‫از‬Fast-Forward‫به‬ ‫اصلی‬ ‫شاخه‬ ‫در‬ ‫شده‬ ‫ثبت‬ ‫کامیت‬ ‫دلیل‬ ‫استفاده‬ ‫فرعی‬ ‫شاخه‬ ‫ایجاد‬ ‫از‬ ‫بعد‬ ‫کند‬.‫لذا‬Git‫یک‬‫جدید‬ ‫ترکیبی‬ ‫کامیت‬ ‫در‬ ‫که‬‫بردارنده‬snapshot‫از‬‫دو‬ ‫هر‬ ‫میکند‬ ‫ایجاد‬ ‫میباشد‬ ‫شاخه‬.‫توجه‬ ‫کامیت‬ ‫این‬ ‫که‬ ‫باشید‬ ‫داشته‬‫ترکیب‬ ‫دو‬ ‫جدید‬‫را‬ ‫ریشه‬‫به‬ ‫دسترسی‬ ‫و‬ ‫دارد‬ ‫اگر‬ ‫و‬ ‫دارد‬ ‫نیز‬ ‫شاخه‬ ‫دو‬ ‫هر‬ ‫تاریخچه‬ ‫فرمان‬ ‫ترکیب‬ ‫این‬ ‫از‬ ‫بعد‬git log‫را‬ ‫دو‬ ‫هر‬ ‫کامیتهای‬ ‫فهرست‬ ‫کنید‬ ‫اجرا‬ ‫دید‬ ‫خواهید‬ ‫را‬ ‫شاخه‬ 28
  • 29. ‫ترکیب‬ ‫در‬ ‫مغایرت‬ ‫بر‬ ‫تغییراتی‬ ‫یک‬ ‫هر‬ ‫که‬ ‫مختلف‬ ‫شاخه‬ ‫دو‬ ‫میخواهید‬ ‫شما‬ ‫که‬ ‫زمانی‬ ‫کنید‬ ‫ترکیب‬ ‫هم‬ ‫با‬ ‫را‬ ،‫اند‬ ‫کرده‬ ‫ایجاد‬ ‫کد‬ ‫قسمت‬ ‫یک‬ ‫روی‬ Git‫نمیتواند‬‫به‬ ‫را‬ ‫شاخه‬ ‫کدام‬ ‫شده‬ ‫اعمال‬ ‫تغییرات‬ ‫که‬ ‫دهد‬ ‫تشخیص‬ ‫یا‬ ‫ترکیب‬ ‫در‬ ‫مغایرت‬ ‫وضعیت‬ ‫این‬ ‫به‬ ‫که‬ ‫کند‬ ‫اضافه‬ ‫اصلی‬ ‫شاخه‬ merge conflicts‫گفته‬‫میشود‬.‫ترکیب‬ ‫حین‬ ‫در‬ ‫وضعیت‬ ‫این‬ ً‫مطمئنا‬Fast- Forward‫آمد‬ ‫نخواهد‬ ‫بوجود‬.‫که‬ ‫زمانی‬Git‫با‬‫شود‬ ‫می‬ ‫مواجه‬ ‫مغایرت‬ ‫میدهد‬ ‫نمایش‬ ‫را‬ ‫زیر‬ ‫پیغام‬: ‫شوند‬ ‫ترکیب‬ ‫ها‬ ‫کامیت‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫اینکه‬ ‫جای‬ ‫به‬Git‫صبر‬ ‫کند‬ ‫کار‬ ‫چه‬ ‫که‬ ‫میپرسد‬ ‫شما‬ ‫از‬ ‫و‬ ‫میکند‬.‫فرمان‬ ‫اجرای‬ ‫با‬git status‫در‬‫داشت‬ ‫خواهد‬ ‫زیر‬ ‫مشابه‬ ‫خروجی‬ ‫سناریو‬ ‫این‬: ‫ب‬‫خش‬‫از‬ ‫قبل‬=======‫شاخه‬ ‫به‬ ‫مربوط‬master‫باشد‬‫می‬‫به‬ ‫مربوط‬ ‫الباقی‬ ‫و‬ ‫کنید‬ ‫ترکیب‬ ‫اصلی‬ ‫شاخه‬ ‫با‬ ‫میخواهید‬ ‫که‬ ‫هایست‬ ‫شاخه‬.‫مشکل‬ ‫حل‬ ‫برای‬ ‫بخشهای‬<<<<<<‫و‬========‫و‬<<<<<<<<‫شده‬ ‫اضافه‬‫توسط‬git‫را‬‫فایل‬ ‫از‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫ترکیب‬ ‫در‬ ‫میخواهید‬ ‫که‬ ‫را‬ ‫فایل‬ ‫از‬ ‫ای‬ ‫نسخه‬ ‫و‬ ‫کنید‬ ‫پاک‬ ‫فرمان‬ ‫با‬ ‫سپس‬ ‫و‬ ‫دارید‬ ‫نگه‬ ‫را‬ ‫کنید‬git add‫به‬git‫فرمان‬‫مشکل‬ ‫که‬ ‫بدهید‬ ‫اید‬ ‫کرده‬ ‫حل‬ ‫را‬.‫مشکل‬ ‫حل‬ ‫از‬ ‫پس‬ ‫پروژه‬ ‫از‬ ‫اگر‬confilict‫و‬‫ها‬ ‫شاخه‬ ‫ترکیب‬ log‫بگیرید‬‫فرمان‬ ‫خروجی‬ ‫در‬log‫تمامی‬confilict‫فهرست‬ ‫نیز‬ ‫گذشته‬ ‫های‬ ‫پروژه‬ ‫در‬ ‫مشکل‬ ‫ریشه‬ ‫کردن‬ ‫پیدا‬ ‫به‬ ‫کمک‬ ‫موارد‬ ‫برخی‬ ‫در‬ ‫که‬ ‫شد‬ ‫خواهند‬ ‫کرد‬ ‫خواهد‬. 29
  • 30. ‫خارجی‬ ‫های‬ ‫مخزن‬ ‫از‬ ‫منظور‬remote repositories‫یا‬‫و‬ ‫آنالین‬ ‫یا‬ ‫خارجی‬ ،‫دور‬ ‫مخازن‬ ...repository‫نمیباشند‬ ‫شما‬ ‫به‬ ‫متعلق‬ ‫که‬ ‫است‬ ‫هایی‬.‫این‬ ‫است‬ ‫ممکن‬ ‫دیگر‬ ‫کامپیوترهای‬ ‫روی‬ ‫بر‬ ‫یا‬ ‫باشند‬ ‫مرکزی‬ ‫سرور‬ ‫یک‬ ‫روی‬ ‫بر‬ ‫مخازن‬ ‫نویسان‬ ‫برنامه‬.‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫صورتی‬ ‫در‬‫پروتکل‬‫شبکه‬ ‫های‬ ‫برای‬ ‫قدرتمندی‬ ‫ابزارهای‬ ‫گیت‬ ‫باشید‬ ‫داشته‬ ‫مخازن‬ ‫این‬ ‫به‬ ‫دسترسی‬ ‫قرار‬ ‫شما‬ ‫اختیار‬ ‫در‬ ‫مخازن‬ ‫دیگر‬ ‫با‬ ‫همکاری‬ ‫و‬ ‫گذاری‬ ‫اشتراک‬ ‫به‬ ‫میدهد‬. ‫در‬ ‫نویسان‬ ‫برنامه‬ ‫دیگر‬ ‫نمایندگی‬ ‫خارجی‬ ‫مخازن‬ ‫اصلی‬ ‫نقش‬ repository‫موجود‬ ‫شخصی‬‫شماست‬ ‫سیستم‬ ‫در‬.‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ ‫شاخه‬‫استفاده‬ ‫باید‬ ‫پروژه‬ ‫نویسی‬ ‫کد‬ ‫و‬ ‫توسعه‬ ‫فرآیند‬ ‫در‬ ‫تنها‬ ‫ها‬ ‫بدهید‬ ‫جداگانه‬ ‫شاخه‬ ‫یک‬ ‫نویس‬ ‫برنامه‬ ‫هر‬ ‫به‬ ‫که‬ ‫نکنید‬ ‫سعی‬ ‫و‬ ‫شوند‬ ‫یک‬ ‫نویس‬ ‫برنامه‬ ‫هر‬ ‫به‬ ‫باید‬ ‫بلکه‬repository‫یا‬‫کامال‬ ‫مخزن‬ ‫بدهید‬ ‫جداگانه‬. 30
  • 31. ‫خارجی‬ ‫مخازن‬ ‫با‬ ‫کار‬ ‫فرمان‬ ‫همانند‬git branch،‫فرمان‬git remote‫برای‬‫به‬ ‫اتصاالت‬ ‫مدیریت‬ ‫میگیرد‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫مخازن‬ ‫دیگر‬.‫مخازن‬ ‫با‬ ‫کار‬ ‫برای‬ ‫در‬ ‫باید‬ ‫خارجی‬repository‫خود‬‫دیگر‬ ‫به‬ ‫گرها‬ ‫اشاره‬ ‫از‬ ‫فهرستی‬ ‫نام‬ ‫یک‬ ‫دارای‬ ‫گرها‬ ‫اشاره‬ ‫این‬ ‫از‬ ‫یک‬ ‫هر‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫مخازن‬ ‫هستند‬ ‫آنها‬ ‫با‬ ‫کار‬ ‫راحتی‬ ‫برای‬. ‫مخازن‬ ‫کردن‬ ‫لیست‬‫خارجی‬ ‫فرمان‬ ‫اجرای‬ ‫با‬git remote‫بدون‬‫مخازن‬ ‫از‬ ‫فهرستی‬ ‫پارامتری‬ ‫هیچ‬ ‫شد‬ ‫خواهد‬ ‫ارائه‬ ‫موجود‬ ‫خارجی‬.‫خارجی‬ ‫مخزن‬ ‫هیچ‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫داد‬ ‫نخواهد‬ ‫خروجی‬ ‫هیچ‬ ‫فرمان‬ ‫این‬ ‫نباشد‬ ‫موجود‬.‫موجود‬ ‫مخزن‬ ‫اگر‬ ‫طریق‬ ‫از‬ ‫را‬ ‫خود‬ ‫سیستم‬ ‫در‬git clone‫دانلود‬‫اجرای‬ ‫با‬ ‫باشید‬ ‫کرده‬ ‫فرمان‬git remote‫یک‬‫نام‬ ‫با‬ ‫خارجی‬ ‫مخزن‬origin‫فهرست‬‫شد‬ ‫خواهد‬. ‫با‬ ‫رابطه‬ ‫در‬ ‫گیت‬ ‫از‬ ‫بیشتر‬ ‫اطالعات‬ ‫دریافت‬ ‫به‬ ‫مایل‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫سویچ‬ ‫از‬ ‫میتوانید‬ ‫هستید‬ ‫خارجی‬ ‫مخازن‬-v‫فرمان‬ ‫در‬git remote ‫استفاده‬‫از‬ ‫هریک‬ ‫کامل‬ ‫آدرس‬ ‫نام‬ ‫بر‬ ‫عالوه‬ ‫صورت‬ ‫این‬ ‫در‬ ‫که‬ ‫کنید‬ ‫میشود‬ ‫ارائه‬ ‫نیز‬ ‫خارجی‬ ‫مخازن‬. 31
  • 32. ‫خارجی‬ ‫مخازن‬ ‫ایجاد‬ ‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬git remote add‫میتوان‬‫یک‬ ‫به‬ ‫جدید‬ ‫اتصال‬ ‫یک‬ ‫کرد‬ ‫ثبت‬ ‫را‬ ‫خارجی‬ ‫مخزن‬.‫زیر‬ ‫صورت‬ ‫به‬ ‫فرمان‬ ‫این‬ ‫کلی‬ ‫فرم‬ ‫میباشد‬:  git remote add <name> <path-to-repo> ‫شده‬ ‫ذکر‬ ‫آدرس‬ ‫با‬ ‫مخزن‬ ‫به‬ ‫میتوانید‬ ‫شما‬ ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫از‬ ‫بعد‬ ‫متصل‬ ‫اید‬ ‫داده‬ ‫کانکشن‬ ‫به‬ ‫که‬ ‫نامی‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫فرمان‬ ‫در‬ ‫شوید‬.‫دیگر‬ ‫با‬ ‫ارتباط‬ ‫برقراری‬ ‫برای‬ ‫متعددی‬ ‫های‬ ‫پروتوکل‬ ‫از‬ ‫گیت‬ ‫مانند‬ ‫میکند‬ ‫استفاده‬ ‫خارجی‬ ‫مخازن‬file،ssh،http‫و‬‫خود‬ ‫پروتوکل‬ ‫مثال‬ ‫طور‬ ‫به‬ ‫گیت‬:  git remote add some-user ssh://git@github.com/some-user/some-repo.git ‫با‬ ‫میتوانید‬ ‫شما‬ ‫باال‬ ‫فرضی‬ ‫فرمان‬ ‫اجرای‬ ‫از‬ ‫بعد‬‫نام‬some-user‫به‬ ‫آدرس‬ ‫در‬ ‫موجود‬ ‫خارجی‬ ‫مخزن‬github.com/some-user/some-repo.git ‫دسترسی‬‫کنید‬ ‫پیدا‬.‫پروتوکل‬ ‫از‬ ‫که‬ ‫آنجایی‬ ‫از‬ssh‫استفاده‬‫شده‬ ‫شد‬ ‫خواهد‬ ‫درخواست‬ ‫گذرواژه‬ ‫شما‬ ‫از‬ ‫اجرا‬ ‫از‬ ‫بعد‬ ‫است‬.‫معموال‬ ‫لذا‬ ‫پروتوکل‬ ‫این‬ ‫از‬ ‫نویسان‬ ‫برنامه‬ ‫دیگر‬ ‫به‬ ‫ثبت‬ ‫اجازه‬ ‫دادن‬ ‫برای‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫میشود‬ ‫استفاده‬‫پروتوکل‬http‫به‬‫تنها‬ ‫عمومی‬ ‫صورت‬ ‫میدهد‬ ‫کنندگان‬ ‫درخواست‬ ‫به‬ ‫را‬ ‫مخزن‬ ‫از‬ ‫خواندن‬ ‫اجازه‬. 32
  • 33. ‫خارجی‬ ‫مخازن‬ ‫ایجاد‬ ‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬git remote add‫یک‬ ‫به‬ ‫جدید‬ ‫اتصال‬ ‫یک‬ ‫میتوان‬ ‫کرد‬ ‫ثبت‬ ‫را‬ ‫خارجی‬ ‫مخزن‬.‫زیر‬ ‫صورت‬ ‫به‬ ‫فرمان‬ ‫این‬ ‫کلی‬ ‫فرم‬ ‫میباشد‬:  git remote add <name> <path-to-repo> ‫شده‬ ‫ذکر‬ ‫آدرس‬ ‫با‬ ‫مخزن‬ ‫به‬ ‫میتوانید‬ ‫شما‬ ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫از‬ ‫بعد‬ ‫متصل‬ ‫اید‬ ‫داده‬ ‫کانکشن‬ ‫به‬ ‫که‬ ‫نامی‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫فرمان‬ ‫در‬ ‫شوید‬.‫دیگر‬ ‫با‬ ‫ارتباط‬ ‫برقراری‬ ‫برای‬ ‫متعددی‬ ‫های‬ ‫پروتوکل‬ ‫از‬ ‫گیت‬ ‫مانند‬ ‫میکند‬ ‫استفاده‬ ‫خارجی‬ ‫مخازن‬file،ssh،http‫و‬‫خود‬ ‫پروتوکل‬ ‫مثال‬ ‫طور‬ ‫به‬ ‫گیت‬:  git remote add some-user ssh://git@github.com/some-user/some-repo.git ‫با‬ ‫میتوانید‬ ‫شما‬ ‫باال‬ ‫فرضی‬ ‫فرمان‬ ‫اجرای‬ ‫از‬ ‫بعد‬‫نام‬some-user‫به‬ ‫آدرس‬ ‫در‬ ‫موجود‬ ‫خارجی‬ ‫مخزن‬github.com/some-user/some-repo.git ‫دسترسی‬‫کنید‬ ‫پیدا‬.‫پروتوکل‬ ‫از‬ ‫که‬ ‫آنجایی‬ ‫از‬ssh‫استفاده‬‫شده‬ ‫شد‬ ‫خواهد‬ ‫درخواست‬ ‫گذرواژه‬ ‫شما‬ ‫از‬ ‫اجرا‬ ‫از‬ ‫بعد‬ ‫است‬.‫معموال‬ ‫لذا‬ ‫پروتوکل‬ ‫این‬ ‫از‬ ‫نویسان‬ ‫برنامه‬ ‫دیگر‬ ‫به‬ ‫ثبت‬ ‫اجازه‬ ‫دادن‬ ‫برای‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫میشود‬ ‫استفاده‬‫پروتوکل‬http‫به‬‫تنها‬ ‫عمومی‬ ‫صورت‬ ‫میدهد‬ ‫کنندگان‬ ‫درخواست‬ ‫به‬ ‫را‬ ‫مخزن‬ ‫از‬ ‫خواندن‬ ‫اجازه‬. ‫مخازن‬ ‫حذف‬‫خارجی‬ ‫در‬‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫نهایت‬git remote rm‫شما‬‫خارجی‬ ‫مخازن‬ ‫به‬ ‫اتصال‬ ‫میتوانید‬ ‫کنید‬ ‫پاک‬ ‫خود‬ ‫سیستم‬ ‫از‬ ‫را‬. git remote rm <remote-name> 33
  • 34. ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫جذب‬ ‫یا‬ ‫جذب‬ ،‫خارجی‬ ‫مخازن‬ ‫دیگر‬ ‫از‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫دانلود‬ ‫عمل‬ ‫به‬fetch‫گفته‬ ‫میشود‬.‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫میتوانید‬ ‫شما‬ ‫خارجی‬ ‫شاخه‬ ‫دانلود‬ ‫برای‬git fetch‫و‬‫کنید‬ ‫استفاده‬ ‫شاخه‬ ‫و‬ ‫خارجی‬ ‫مخزن‬ ‫مستعار‬ ‫نام‬ ‫بیان‬.‫مثال‬ ‫طور‬ ‫به‬:  git fetch <remote> <branch> ‫نظر‬ ‫مورد‬ ‫خارجی‬ ‫مخزن‬ ‫در‬ ‫موجود‬ ‫های‬ ‫شاخه‬ ‫تمامی‬ ‫تا‬ ‫بودید‬ ‫مایل‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫کنید‬ ‫اجرا‬ ‫شاخه‬ ‫نام‬ ‫بیان‬ ‫بدون‬ ‫را‬ ‫باال‬ ‫فرمان‬ ‫است‬ ‫کافی‬ ‫کنید‬ ‫دانلود‬ ‫را‬. ‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫همچنین‬git branch‫همراه‬ ‫به‬‫سویچ‬-r‫از‬ ‫پس‬ ‫میتوانید‬ ‫کنید‬ ‫درخواست‬ ‫گیت‬ ‫از‬ ‫نیز‬ ‫را‬ ‫آنها‬ ‫از‬ ‫فهرستی‬ ‫ها‬ ‫شاخه‬ ‫دانلود‬:  git branch -r ‫بود‬ ‫خواهد‬ ‫زیر‬ ‫نمونه‬ ‫مانند‬ ‫شده‬ ‫ارائه‬ ‫فهرست‬ ‫که‬: origin/master origin/some-feature origin/another-featur ‫های‬ ‫شاخه‬ ‫همیشه‬ ،‫محلی‬ ‫های‬ ‫شاخه‬ ‫از‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫کردن‬ ‫متمایز‬ ‫برای‬ ‫بهمراه‬ ‫را‬ ‫دارند‬ ‫قرار‬ ‫آن‬ ‫در‬ ‫که‬ ‫خارجی‬ ‫مخزن‬ ‫مستعار‬ ‫نام‬ ‫پیشوند‬ ‫خارجی‬ ‫دارند‬.‫گر‬ ‫اشاره‬ ‫تنها‬ ‫حقیقت‬ ‫در‬ ‫گیت‬ ‫در‬ ‫خارجی‬ ‫مخازن‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ ‫نیستند‬ ‫مخازن‬ ‫دیگر‬ ‫به‬ ‫دائمی‬ ‫اتصال‬ ‫و‬ ‫هستند‬.‫در‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫همچنین‬ ‫نسخه‬ ‫به‬ ‫محدود‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫روی‬ ‫بر‬ ‫تغییرات‬ ‫و‬ ‫میشوند‬ ‫کپی‬ ‫محلی‬ ‫مخزن‬ ‫ماند‬ ‫خواهند‬ ‫باقی‬ ‫شده‬ ‫کپی‬ ‫های‬.‫صورت‬ ‫به‬ ‫گیت‬ ‫که‬ ‫معناست‬ ‫بدان‬ ‫این‬ ‫همچنین‬ ‫به‬ ‫اقدام‬ ‫خودکار‬fetch‫به‬ ‫باید‬ ‫شما‬ ‫و‬ ‫نمیکند‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫بروزرسانی‬ ‫و‬ 34
  • 35. ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫بررسی‬ ‫هستند‬ ‫خواندنی‬ ‫تنها‬ ‫خارجی‬ ‫های‬ ‫شاخه‬.‫که‬ ‫زمانی‬ ‫که‬ ‫معنا‬ ‫بدین‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫شما‬git checkout‫به‬،‫میکنید‬ ‫پیدا‬ ‫دسترسی‬ ‫شاخه‬ ‫یک‬ ‫بررسی‬ ‫و‬ ‫ببینید‬ ‫را‬ ‫آن‬ ‫کامیتهای‬ ‫و‬ ‫آن‬ ‫تاریخچه‬ ‫میتوانید‬ ‫تنها‬ ‫خود‬ ‫محلی‬ ‫مخزن‬ ‫به‬ ‫را‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫این‬ ‫که‬ ‫زمانی‬ ‫تا‬ ‫ولی‬ ‫کنید‬ ‫اعمال‬ ‫تغییرات‬ ‫و‬ ‫کنید‬ ‫کار‬ ‫آنها‬ ‫روی‬ ‫بر‬ ‫نمیتوانید‬ ‫نکنید‬ ‫متصل‬ ‫کنید‬. ‫عملگر‬..‫فرمان‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫تاریخچه‬ ‫کردن‬ ‫فیلتر‬ ‫در‬git log ‫بسیار‬‫دارد‬ ‫کاربرد‬.‫شاخه‬ ‫آپدیتهای‬ ‫تمامی‬ ‫زیر‬ ‫فرمان‬ ‫مثال‬ ‫برای‬ ‫خارجی‬origin/master‫که‬‫محلی‬ ‫شاخه‬ ‫در‬master‫شما‬‫را‬ ‫نیست‬ ‫موجود‬ ‫میکند‬ ‫فهرست‬.‫با‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫ترکیب‬ ‫از‬ ‫قبل‬ ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫میشود‬ ‫توصیه‬ ‫محلی‬ ‫های‬ ‫شاخه‬.  git log master..origin/master ‫روند‬ ‫از‬ ‫شما‬ ‫که‬ ‫است‬ ‫معنی‬ ‫بدان‬ ‫این‬ ‫داشت‬ ‫خروجی‬ ‫فرمان‬ ‫این‬ ‫اگر‬ ‫باید‬ ً‫احتماال‬ ‫و‬ ‫هستید‬ ‫عقب‬ ‫پروژه‬ ‫سازی‬ ‫پیاده‬repository‫محلی‬‫خود‬ ‫کنید‬ ‫آپدیت‬ ‫را‬.‫میپردازیم‬ ‫آن‬ ‫بررسی‬ ‫به‬ ‫بعد‬ ‫بخش‬ ‫در‬ ‫که‬. ‫امکان‬checkout‫شاخه‬‫با‬ ‫اما‬ ‫میباشد‬ ‫موجود‬ ‫گیت‬ ‫در‬ ‫خارجی‬ ‫های‬ ‫فرمان‬ ‫اجرای‬git checkout‫بر‬‫وضعیت‬ ‫در‬ ‫شما‬ ‫خارجی‬ ‫های‬ ‫شاخه‬ ‫روی‬ 35
  • 36. ‫ریشه‬ ‫جابجایی‬ ‫و‬ ‫ترکیب‬ ‫صورت‬ ‫به‬ ‫و‬ ‫هستید‬ ‫نویسی‬ ‫برنامه‬ ‫تیم‬ ‫یک‬ ‫عضو‬ ‫شما‬ ‫که‬ ‫کنید‬ ‫فرض‬ ‫میکنید‬ ‫کار‬ ‫پروژه‬ ‫یک‬ ‫روی‬ ‫بر‬ ‫گروهی‬.‫از‬ ‫بخشی‬ ‫روی‬ ‫بر‬ ‫شما‬ ‫و‬ ‫نام‬ ‫با‬ ‫پروژه‬some-feature‫در‬‫هستید‬ ‫نویسی‬ ‫کد‬ ‫حال‬.‫گذشت‬ ‫با‬ ‫زیاد‬ ‫احتمال‬ ‫به‬ ‫و‬ ‫میدهد‬ ‫ادامه‬ ‫خود‬ ‫توسعه‬ ‫به‬ ‫رسمی‬ ‫پروژه‬ ‫زمان‬ ‫اضافه‬ ‫خود‬ ‫محلی‬ ‫مخزن‬ ‫را‬ ‫جدید‬ ‫تغییرات‬ ‫که‬ ‫داشت‬ ‫خواهید‬ ‫نیاز‬ ‫شما‬ ‫درست‬ ‫عملکرد‬ ‫از‬ ‫تا‬ ‫کنید‬some-feature‫با‬‫مطمئن‬ ‫جدید‬ ‫آپدیتهای‬ ‫شوید‬. ‫فرمان‬ ‫از‬ ‫باید‬ ‫شما‬ ‫سناریویی‬ ‫چنین‬ ‫در‬git merge‫استفاده‬‫تا‬ ‫کنید‬ ‫شاخه‬ ‫به‬ ‫را‬ ‫جدید‬ ‫آپدیتهای‬master‫کنید‬ ‫اضافه‬ ‫از‬ ‫ترکیب‬ ‫این‬ ‫است‬ ‫کرده‬ ‫پیدا‬ ‫انشعاب‬ ‫شما‬ ‫تاریخچه‬ ‫که‬ ‫آنجا‬ ‫از‬ ‫ترکیب‬ ‫اعمال‬ ‫از‬ ‫پس‬ ‫و‬ ‫بود‬ ‫خواهد‬ ‫طرفه‬ ‫سه‬ ‫نوع‬some-feature‫به‬ ‫شاخه‬ ‫آپیدیتهای‬ ‫آخرین‬master‫دسترسی‬‫داشت‬ ‫خواهد‬ 36
  • 37. ‫ریشه‬ ‫جابجایی‬ ‫و‬ ‫ترکیب‬ ‫پر‬ ‫پروژه‬ ‫تاریخچه‬ ‫مداوم‬ ‫آپدیتهای‬ ‫با‬ ‫میکنید‬ ‫مالحظه‬ ‫که‬ ‫همانطور‬ ‫سه‬ ‫ترکیب‬ ‫سازی‬ ‫پیاده‬ ‫برای‬ ‫تنها‬ ‫که‬ ‫معنا‬ ‫بی‬ ‫کامیتهای‬ ‫از‬ ‫میشود‬ ‫هستند‬ ‫نیاز‬ ‫طرفه‬.‫میشود‬ ‫توصیه‬ ‫خطی‬ ‫ای‬ ‫تاریخچه‬ ‫داشتن‬ ‫برای‬ ‫لذا‬ ‫به‬‫جای‬merge‫از‬rebase‫استفاده‬‫زیر‬ ‫صورت‬ ‫به‬ ‫شود‬: 37
  • 38. Pulling ‫از‬ ‫استفاده‬ ‫که‬ ‫آنجا‬ ‫از‬‫فرمانهای‬fetch‫و‬merge‫خیلی‬‫برنامه‬ ‫در‬ ‫شاخه‬ ‫با‬ ‫کار‬ ‫راحتی‬ ‫برای‬ ‫میانبر‬ ‫یک‬ ‫گیت‬ ‫هستند‬ ‫رایج‬ ‫تیمی‬ ‫نویسی‬ ‫نام‬ ‫با‬ ‫میدهد‬ ‫قرار‬ ‫ما‬ ‫اختیار‬ ‫در‬ ‫خارجی‬ ‫های‬pull  git pull origin/maste ‫با‬‫شاخه‬ ‫گیت‬ ‫باال‬ ‫فرمان‬ ‫اجرای‬master‫در‬‫خارجی‬ ‫مخزن‬origin‫را‬ fetch‫میکند‬‫جاری‬ ‫شاخه‬ ‫به‬ ‫آنرا‬ ‫و‬merge‫میکند‬.‫در‬ ‫همچنین‬ ‫میتوانید‬ ‫کنید‬ ‫استفاده‬ ‫طرفه‬ ‫سه‬ ‫ترکیب‬ ‫از‬ ‫نمیخواهید‬ ‫که‬ ‫صورتی‬ ‫آرگومان‬--rebase‫را‬‫پس‬ ‫صورت‬ ‫این‬ ‫در‬ ‫که‬ ‫دهید‬ ‫پاس‬ ‫باال‬ ‫فرمان‬ ‫به‬ ‫از‬fetch‫شاخه‬‫از‬ ‫استفاده‬ ‫با‬ ‫خارجی‬rebase‫به‬‫اضافه‬ ‫جاری‬ ‫شاخه‬ ‫میشود‬. 38
  • 39. Pushing ‫فرمان‬ ‫تکمیل‬ ‫برای‬git fetch‫فرمان‬ ‫گیت‬push‫ما‬ ‫اختیار‬ ‫در‬ ‫نیز‬ ‫را‬ ‫عملکرد‬ ‫عکس‬ ً‫دقیقا‬ ‫آن‬ ‫عمکرد‬ ‫که‬ ‫میدهد‬ ‫قرار‬fetch‫میباشد‬.‫این‬ ‫از‬ ‫میشود‬ ‫استفاده‬ ‫خارجی‬ ‫مخازن‬ ‫به‬ ‫محلی‬ ‫های‬ ‫شاخه‬ ‫آپلود‬ ‫برای‬ ‫فرمان‬ ‫میباشد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫فرمان‬ ‫این‬ ‫فرم‬ ‫که‬:  git push <remote> <branch> ‫محلی‬ ‫شاخه‬ ‫باال‬ ‫فرمان‬<branch>‫را‬‫شده‬ ‫مشخص‬ ‫خارجی‬ ‫مخزن‬ ‫به‬ ‫میکند‬ ‫آپلود‬.‫عمل‬ ‫در‬ ‫اما‬fetch‫با‬push‫آن‬ ‫و‬ ‫دارند‬ ‫اساس‬ ‫فرق‬ ‫یک‬ ‫برخالف‬ ‫که‬ ‫هست‬ ‫این‬fetch‫که‬‫حالت‬ ‫در‬ ‫خارجی‬ ‫شاخه‬ ‫یک‬detached‫به‬ ‫میکند‬ ‫اضافه‬ ‫محلی‬ ‫مخزن‬‫فرمان‬push‫در‬‫محلی‬ ‫شاخه‬ ‫یک‬ ‫مقصد‬ ‫مخزن‬ ‫میکند‬ ‫ایجاد‬.‫مخزن‬ ‫در‬ ‫را‬ ‫زیر‬ ‫فرمان‬ ‫شما‬ ‫کنید‬ ‫فرض‬ ‫مثال‬ ‫طور‬ ‫به‬ ‫میکنید‬ ‫اجرا‬ ‫خود‬ ‫محلی‬:  git push mary my-feature ‫نخواهد‬ ‫ایجاد‬ ‫شما‬ ‫محلی‬ ‫مخزن‬ ‫در‬ ‫تغییری‬ ‫هیچ‬ ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫مخزن‬ ‫روی‬ ‫بر‬ ‫که‬ ‫تغییراتی‬ ‫اما‬ ‫کرد‬mary‫ایجاد‬‫صورت‬ ‫به‬ ‫میشوند‬ ‫بود‬ ‫خواهند‬ ‫زیر‬ 39
  • 40. Pushing ‫فرمان‬ ‫تکمیل‬ ‫برای‬git fetch‫فرمان‬ ‫گیت‬push‫ما‬ ‫اختیار‬ ‫در‬ ‫نیز‬ ‫را‬ ‫عملکرد‬ ‫عکس‬ ً‫دقیقا‬ ‫آن‬ ‫عمکرد‬ ‫که‬ ‫میدهد‬ ‫قرار‬fetch‫میباشد‬.‫این‬ ‫از‬ ‫میشود‬ ‫استفاده‬ ‫خارجی‬ ‫مخازن‬ ‫به‬ ‫محلی‬ ‫های‬ ‫شاخه‬ ‫آپلود‬ ‫برای‬ ‫فرمان‬ ‫میباشد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫فرمان‬ ‫این‬ ‫فرم‬ ‫که‬:  git push <remote> <branch> ‫محلی‬ ‫شاخه‬ ‫باال‬ ‫فرمان‬<branch>‫را‬‫شده‬ ‫مشخص‬ ‫خارجی‬ ‫مخزن‬ ‫به‬ ‫میکند‬ ‫آپلود‬.‫عمل‬ ‫در‬ ‫اما‬fetch‫با‬push‫آن‬ ‫و‬ ‫دارند‬ ‫اساس‬ ‫فرق‬ ‫یک‬ ‫برخالف‬ ‫که‬ ‫هست‬ ‫این‬fetch‫که‬‫حالت‬ ‫در‬ ‫خارجی‬ ‫شاخه‬ ‫یک‬detached‫به‬ ‫میکند‬ ‫اضافه‬ ‫محلی‬ ‫مخزن‬‫فرمان‬push‫در‬‫محلی‬ ‫شاخه‬ ‫یک‬ ‫مقصد‬ ‫مخزن‬ ‫میکند‬ ‫ایجاد‬.‫مخزن‬ ‫در‬ ‫را‬ ‫زیر‬ ‫فرمان‬ ‫شما‬ ‫کنید‬ ‫فرض‬ ‫مثال‬ ‫طور‬ ‫به‬ ‫میکنید‬ ‫اجرا‬ ‫خود‬ ‫محلی‬:  git push mary my-feature ‫نخواهد‬ ‫ایجاد‬ ‫شما‬ ‫محلی‬ ‫مخزن‬ ‫در‬ ‫تغییری‬ ‫هیچ‬ ‫فرمان‬ ‫این‬ ‫اجرای‬ ‫مخزن‬ ‫روی‬ ‫بر‬ ‫که‬ ‫تغییراتی‬ ‫اما‬ ‫کرد‬mary‫ایجاد‬‫صورت‬ ‫به‬ ‫میشوند‬ ‫بود‬ ‫خواهند‬ ‫زیر‬ ‫باشید‬ ‫داشته‬ ‫توجه‬‫هم‬‫اکنون‬my- feature‫یک‬‫در‬ ‫میباشد‬ ‫محلی‬ ‫شاخه‬ ‫فرمان‬ ‫اگر‬ ‫که‬ ‫صورتی‬fetch‫از‬‫روی‬ ‫مخزن‬mary‫یک‬ ‫شاخه‬ ‫این‬ ‫میشد‬ ‫اجرا‬ ‫حالت‬ ‫در‬ ‫خارجی‬ ‫شاخه‬detached ‫میبود‬.‫خاصیت‬ ‫این‬push‫کمی‬‫آنرا‬ ‫میکند‬ ‫خطرناک‬.‫بر‬ ‫شما‬ ‫که‬ ‫کنید‬ ‫فرض‬ ‫نویسی‬ ‫کد‬ ‫حال‬ ‫در‬ ‫خود‬ ‫مخزن‬ ‫روی‬ ‫ظاهر‬ ‫محلی‬ ‫شاخه‬ ‫یک‬ ‫ناگهان‬ ‫و‬ ‫هستید‬ ‫میشود‬!‫برای‬ ‫تنها‬ ‫فرمان‬ ‫این‬ ‫از‬ ‫لذا‬ ‫مرکزی‬ ‫مخازن‬ ‫بروزرسانی‬‫استفاده‬ ‫شود‬‫می‬ 40
  • 41. ‫یا‬ ‫عمومی‬ ‫مخازن‬public ‫نقطه‬ ‫نقش‬ ‫که‬ ‫هستند‬ ‫عمومی‬ ‫مخزن‬ ‫یک‬ ‫حاوی‬ ‫تیمی‬ ‫های‬ ‫پروژه‬ ‫تمامی‬ ‫میکند‬ ‫ایفا‬ ‫را‬ ‫نویس‬ ‫برنامه‬ ‫هر‬ ‫برای‬ ‫پروژه‬ ‫به‬ ‫ورود‬.‫مخازن‬ ‫میباشند‬ ‫کاری‬ ‫یا‬ ‫پروژه‬ ‫پوشه‬ ‫بدون‬ ‫و‬ ‫ساده‬ ‫همیشه‬ ‫عمومی‬.‫علت‬ ‫اعضاء‬ ‫دیگر‬ ‫کار‬ ‫حذف‬ ‫یا‬ ‫و‬ ‫تغییر‬ ‫از‬ ‫جلوگیری‬ ،‫پروژه‬ ‫پوشه‬ ‫نداشتن‬ ‫میباشد‬ ‫اعضاء‬ ‫دیگر‬ ‫توسط‬ ‫اتفاقی‬ ‫صورت‬ ‫به‬ ‫تیم‬.‫مخزن‬ ‫ایجاد‬ ‫برای‬ ‫کنید‬ ‫استفاده‬ ‫زیر‬ ‫فرمان‬ ‫از‬ ‫پروژه‬ ‫پوشه‬ ‫بدون‬:  git init --bare <path> ‫شوند‬ ‫استفاده‬ ‫پروژه‬ ‫کد‬ ‫سورس‬ ‫ذخیره‬ ‫جهت‬ ‫تنها‬ ‫باید‬ ‫عمومی‬ ‫مخازن‬ ‫پروژه‬ ‫توسعه‬ ‫و‬ ‫طراحی‬ ‫محیط‬ ‫عنوان‬ ‫به‬ ‫نه‬.‫پسوند‬ ‫از‬ ‫لذا‬git‫برای‬ ‫به‬ ‫کامل‬ ‫مثال‬ ‫نتیجه‬ ‫در‬ ‫میشود‬ ‫استفاده‬ ‫عمومی‬ ‫مخزن‬ ‫کردن‬ ‫مشخص‬ ‫بود‬ ‫خواهد‬ ‫زیر‬ ‫صورت‬:  git init --bare some-repo.git ‫دیگر‬ ‫با‬ ‫دیگری‬ ‫فرق‬ ‫عمومی‬ ‫مخازن‬ ،‫پروژه‬ ‫پوشه‬ ‫نبودن‬ ‫دارا‬ ‫جز‬ ‫به‬ ‫از‬ ‫مخازن‬ ‫دیگر‬ ‫مانند‬ ‫میتوانید‬ ‫شما‬ ‫و‬ ‫ندارند‬ ‫عادی‬ ‫مخازن‬push، pull‫و‬...‫کنید‬ ‫استفاده‬ ‫آنها‬ ‫روی‬ ‫بر‬. 41
  • 42. ‫متمرکز‬ ‫مدل‬ ‫از‬ ‫یک‬ ‫هر‬ ‫که‬ ‫طوری‬ ‫به‬ ‫میباشد‬ ‫کوچک‬ ‫تیمهای‬ ‫مناسب‬ ‫متمرکز‬ ‫مدل‬ ‫مخزن‬ ‫روی‬ ‫بر‬ ‫تغییرات‬ ‫ثبت‬ ‫دسترسی‬ ‫سطح‬ ‫دارای‬ ‫نویسی‬ ‫کد‬ ‫تیم‬ ‫اعضاء‬ ‫هستند‬ ‫عمومی‬.‫سیستمهای‬ ‫در‬ ‫رایج‬ ‫مدل‬ ‫شبیه‬ ‫بسیار‬ ‫مدل‬ ‫این‬SVN‫و‬ CVS‫میباشد‬.‫مخزن‬ ‫بواسطه‬ ‫باید‬ ‫تغییرات‬ ‫تمامی‬ ‫مدل‬ ‫این‬ ‫در‬ ‫شود‬ ‫گذاشته‬ ‫اشتراک‬ ‫به‬ ‫تیم‬ ‫اعضای‬ ‫تمام‬ ‫بین‬ ‫عمومی‬.‫مدل‬ ‫این‬ ‫در‬ ‫آنالین‬ ‫یا‬ ‫و‬ ‫هستند‬ ‫نصب‬ ‫داخلی‬ ‫سرور‬ ‫روی‬ ‫بر‬ ‫معموال‬ ‫عمومی‬ ‫مخزن‬ ‫مانند‬ ‫هستند‬github‫و‬bitbucket ‫مختلف‬ ‫کدنویسان‬ ‫مدل‬ ‫این‬ ‫در‬ ‫خود‬ ‫شخصی‬ ‫مخازن‬ ‫روی‬ ‫پروژه‬ ‫کار‬‫کنند‬‫می‬‫از‬ ً‫کامال‬ ‫که‬ ‫جدا‬ ‫همکاران‬ ‫دیگر‬ ‫مخازن‬ ‫میباشند‬.‫نویسی‬ ‫کد‬ ‫که‬ ‫زمانی‬ ‫یک‬ ‫هر‬ ‫توسط‬ ‫پروژه‬ ‫از‬ ‫بخش‬ ‫یک‬ ‫در‬ ‫کد‬ ،‫شد‬ ‫تکمیل‬ ‫اعضا‬ ‫از‬ ‫کامیت‬ ‫شخصی‬ ‫مخازن‬ ‫مستر‬ ‫شاخه‬ ‫عمومی‬ ‫مخزن‬ ‫به‬ ‫سپس‬ ‫و‬ ‫میشوند‬ push‫شوند‬‫می‬. 42
  • 43. ‫متمرکز‬ ‫مدل‬ ‫عمومی‬ ‫مخزن‬ ‫به‬ ‫تیم‬ ‫اعضا‬ ‫از‬ ‫یکی‬ ‫توسط‬ ‫جدید‬ ‫تغییرات‬ ‫آپلود‬ ‫از‬ ‫پس‬ ‫با‬ ‫خود‬ ‫شخصی‬ ‫مخازن‬ ‫به‬ ‫را‬ ‫تغییرات‬ ‫این‬ ‫میتوانند‬ ‫تیم‬ ‫اعضا‬ ‫دیگر‬ ‫از‬ ‫استفاده‬merge‫یا‬ ‫و‬rebase‫اضافه‬‫کنند‬. ‫فرآیند‬ ‫با‬‫در‬ ‫اصلی‬‫شدیم‬ ‫آشنا‬ ‫متمرکز‬ ‫مدل‬.‫دارای‬ ‫مدل‬ ‫این‬ ‫اما‬ ‫تیم‬ ‫عضو‬ ‫چند‬ ‫که‬ ‫زمانی‬ ‫مثال‬ ‫طور‬ ‫به‬ ،‫میباشد‬ ‫نیز‬ ‫محدودیتهایی‬ ‫مشکل‬ ‫دچار‬ ‫مدل‬ ‫این‬ ‫کنند‬ ‫آپلود‬ ‫عمومی‬ ‫مخزن‬ ‫به‬ ‫همزمان‬ ‫بخواهند‬ ‫میشود‬.‫که‬ ‫شد‬ ‫اشاره‬ ‫مدل‬ ‫این‬ ‫معرفی‬ ‫ابتدای‬ ‫در‬ ‫هم‬ ‫دلیل‬ ‫همین‬ ‫به‬ ‫میباشد‬ ‫نویسی‬ ‫برنامه‬ ‫کوچک‬ ‫تیمهای‬ ‫مناسب‬ ‫مدل‬ ‫این‬. ‫کند‬ ‫پیدا‬ ‫دسترسی‬ ‫عمومی‬ ‫مخزن‬ ‫به‬ ‫که‬ ‫عضوی‬ ‫اولین‬ ‫شرایطی‬ ‫چنین‬ ‫در‬ ‫شدن‬ ‫شاخه‬ ‫با‬ ‫دیگر‬ ‫عضو‬ ‫اما‬ ‫کند‬ ‫آپلود‬ ‫را‬ ‫خود‬ ‫تغییرات‬ ‫میتواند‬ ‫از‬ ‫نمیتواند‬ ‫و‬ ‫میشود‬ ‫مواجه‬ ‫تاریخچه‬fast forward‫برای‬merge ‫استفاده‬‫کند‬.‫با‬ ‫نویسی‬ ‫برنامه‬ ‫اگر‬ ‫زیر‬ ‫تصویر‬ ‫در‬ ‫مثال‬ ‫طور‬ ‫به‬ ‫نام‬john‫قبل‬‫اینکه‬ ‫از‬Mary‫تغییرات‬‫اقدام‬ ‫کند‬ ‫آپلود‬ ‫را‬ ‫خود‬ ‫مخزن‬ ‫در‬ ‫کند‬ ‫عمومی‬ ‫مخزن‬ ‫به‬ ‫آپلود‬ ‫به‬Mary‫تضاد‬‫می‬ ‫بوجود‬ ‫داده‬ ‫آید‬ ،‫همزمان‬ ‫آپلود‬ ‫مشکل‬ ‫جز‬ ‫به‬ ‫و‬ ‫ساده‬ ‫بسیار‬ ‫متمرکز‬ ‫مدل‬ ‫میباشد‬ ‫کوچک‬ ‫تیمهای‬ ‫مناسب‬. ‫شخصی‬ ‫مخازن‬ ‫روی‬ ‫بر‬ ‫اعضا‬ ‫در‬ ً‫مرتبا‬ ‫و‬ ‫میکنند‬ ‫کار‬ ‫خود‬ ‫دانلود‬ ‫و‬ ‫آپلود‬ ‫حال‬ ‫عمومی‬ ‫مخزن‬ ‫به‬ ‫تغییرات‬ ‫دارای‬ ‫اعضا‬ ‫تمامی‬ ‫و‬ ‫هستند‬ ‫سرور‬ ‫در‬ ‫ثبت‬ ‫دسترسی‬ ‫سطح‬ ‫هستند‬. 43
  • 44. ‫توجه‬ ‫از‬ ‫تشکر‬ ‫با‬ ‫شما‬ 44