راهنما:گیت: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
4nn1l2 (بحث | مشارکت‌ها)
4nn1l2 (بحث | مشارکت‌ها)
خط ۱۴۸:
[[File:Emojione 2139.svg|20px]] {{کوچک|قبل از انجام این کار بایستی قبلاً با استفاده از <code>git fetch</code> یا <code>git pull</code> حتماً شاخهٔ ''محلی'' origin/master را از روی مخزن دور به روز کرده باشید وگرنه فایده‌ای ندارد. هرچند ممکن است گیج‌کننده به نظر آید، این توضیح ضروری است که origin/master هم در مخزن محلی است و هم در مخزن دور و هنگام به کار بردن فرمان reset شما صرفاً وضعیت را به وضعیت شاخهٔ origin/master محلی بر می‌گردانید. بنابراین لازم است که وضعیت خود این شاخه اوکی باشد. توضیح دوم اینکه فرق fetch با pull در این است که fetch صرفاً origin/master محلی را با مخزن دور همگام می‌کند (تاریخچهٔ مخزن دور را به صورت محلی در دسترس شما قرار می‌دهد)، ولی pull علاوه بر این کار عمل ادغام را نیز انجام خواهد داد، به عبارت دیگر pull{{=}}fetch+merge}}
 
[[File:Emojione 2139.svg|20px]] {{کوچک|چرا کامیتی که در مخزن محلی زده‌اید و بعداً در مخزن دور منتشر کرده‌اید، با وجود همگام‌سازی مخزن‌ها، مخزن محلی را جلو انداخته؟ مگر کامیت گرفته‌شده از مخزن دور قبلاً در مخزن محلی نبوده؟ چون [[اس‌اچ‌ای-۱|SHA-1]] کامیت‌ها تغییر کرده و سیستم این‌ها را به دو عنوان کامیت مجزا حساب خواهد کرد. چرا SHA-1 کامیت تغییر کرده؟ چون بین فرستادن پچ تا اعمال آن توسط دولوپرتوسعه‌دهنده فاصله افتاده، شاید دولوپرتوسعه‌دهنده کامیت را rebase کرده باشد و در نتیجه والد کامیت تغییر کرده باشد و لاجرم SHA-1ش نیز تغییر کرده است. حتی اگر rebase هم نکرده باشد، نام و تاریخ commit (برخلاف author) قطعاً به نام دولوپرتوسعه‌دهنده و زمان جدید تغییر خواهد کرد و SHA-1 کامیت هم ۱۰۰٪ تغییر خواهد کرد، بنابراین نگه داشتن کامیت قبلی بی‌فایده است و به عنوان یک زائده بیرون می‌زند و مخزن محلی را جلو می‌اندازد.}}
 
ولی اگر طبق توصیهٔ این راهنما از همان اول یک شاخهٔ اختصاصی برای تیکت مربوطه ایجاد کنید اصلاً به این مشکل و دردسرهای احتمالی آن بر نخواهید خورد.