Git2. کاربر اطالعات
شده نصب تازه نسخه هر با که کاری اولین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
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