Chapters ▾ 2nd Edition

A3.8 پیوست C: دستورات گیت (Git Commands) - اعمال تغییرات به صورت پچ (Patching)

اعمال تغییرات به صورت پچ (Patching)

چند فرمان در گیت بر این مفهوم متمرکز هستند که کمیت‌ها را از منظر تغییراتی که وارد می‌کنند تصور کنیم، گویی که رشتهٔ کمیت‌ها مجموعه‌ای از پَچ‌هاست. این دستورها به شما کمک می‌کنند شاخه‌های خود را به این شیوه مدیریت کنید.

انتخاب و اعمال یک کامیت مشخص (git cherry-pick)

فرمان git cherry-pick برای گرفتن تغییری که در یک کمیت گیت معرفی شده و تلاش برای بازتولید آن به‌عنوان یک کمیت جدید روی شاخه‌ای که هم‌اکنون روی آن هستید کاربرد دارد. این کار زمانی مفید است که بخواهید یک یا دو کمیت را به‌طور جداگانه از یک شاخه بردارید، به‌جای اینکه کل شاخه را که همهٔ تغییرات را می‌آورد، merge کنید.

عمل cherry-pick در بخش روندهای کاری بازپایه‌گذاری و انتخاب گزینشی (Rebasing and Cherry-Picking Workflows) توضیح داده و نشان داده شده است.

بازپایه‌گذاری (git rebase)

فرمان git rebase اساساً یک cherry-pick خودکار است. این فرمان مجموعه‌ای از کمیت‌ها را تعیین کرده و سپس آن‌ها را به‌نوبت و به همان ترتیب در جای دیگری cherry-pick می‌کند.

بحث rebase به‌طور مفصل در بازپایه‌گذاری (Rebasing) آمده است، از جمله مسائل همکاری که در صورت rebase کردن شاخه‌هایی که قبلاً عمومی شده‌اند پیش می‌آید.

ما در عمل از آن در مثالی برای جدا کردن تاریخچهٔ خود به دو مخزن مجزا در جایگزینی (Replace) استفاده می‌کنیم، و نیز از گزینهٔ --onto بهره می‌بریم.

در بازاستفاده خودکار از حل تضادها (Rerere) با برخورد به یک تعارض merge هنگام rebase روبه‌رو می‌شویم.

همچنین از rebase در حالت تعاملی/اسکریپتی با گزینهٔ -i در تغییر پیام چندین کامیت (Changing Multiple Commit Messages) استفاده می‌کنیم.

برگرداندن تغییرات یک کامیت (git revert)

فرمان git revert عملاً معکوس git cherry-pick است. این فرمان یک کمیت جدید ایجاد می‌کند که دقیقاً مخالف تغییری است که کمیت هدف وارد کرده است، به‌عبارت دیگر آن تغییر را لغو یا برمی‌گرداند.

ما از این در معکوس کردن کامیت (Reverse the commit) برای بازگرداندن یک کمیت merge استفاده می‌کنیم.

scroll-to-top