GIT-REVISE(1) git-revise GIT-REVISE(1) نام (NAME) git-revise - به‌روزرسانی، تفکیک و چیدمان کارآمد کامیت‌های گیت خلاصه دستور (SYNOPSIS) git revise [] [] توضیحات (DESCRIPTION) دستور git revise یک زیردستور git(1) برای به‌روزرسانی، تفکیک و بازآرایی کارآمد کامیت‌ها است. این ابزار به شدت از git-rebase(1) الهام گرفته است، اما تلاش می‌کند برای گردش‌های کاری مبتنی بر دسته وصله (patch-stack) کارآمدتر و ارگونومیک‌تر باشد. به‌طور پیش‌فرض، git revise تغییرات استیج‌شده (staged) را بر روی اعمال کرده و HEAD را به‌روز می‌کند تا به تاریخچه بازبینی‌شده اشاره کند. همچنین این ابزار از تفکیک کامیت‌ها و بازنویسی پیام کامیت‌ها پشتیبانی می‌کند. برخلاف git-rebase(1) ، دستور git revise از تغییر دایرکتوری کاری و وضعیت ایندکس خودداری می‌کند، تمامی ادغام‌ها را در حافظه (in-memory) انجام می‌دهد و تنها در صورت لزوم آن‌ها را روی دیسک می‌نویسد. این امر به آن اجازه می‌دهد روی پایگاه‌های کد بزرگ به‌طور چشمگیری سریع‌تر عمل کند و از باطل شدن بیلدها جلوگیری نماید. اگر --autosquash یا --interactive مشخص شود، آرگومان می‌تواند حذف شود یا با مقدار ویژه :option:--root داده شود. اگر حذف شود، git revise محدوده‌ای از کامیت‌های منتشرنشده روی شاخه جاری را در نظر می‌گیرد. اگر به صورت :option:--root داده شود، تمام کامیت‌ها از جمله کامیت ریشه در نظر گرفته می‌شوند. گزینه‌ها (OPTIONS) گزینه‌های عمومی (General options) -a, --all استیج کردن تغییرات فایل‌های ردیابی‌شده پیش از بازبینی. -p, --patch استیج تعاملی بخش‌ها (hunks) از درخت کاری پیش از بازبینی. --no-index نادیده گرفتن تغییرات استیج‌شده در ایندکس. --reauthor بازنشانی نویسنده کامیت هدف به کاربر جاری. --ref شاخه کاری جهت به‌روزرسانی؛ پیش‌فرض HEAD است. -S, --gpg-sign, --no-gpg-sign امضای GPG کامیت‌ها. این گزینه بر هر دو پیکربندی گیت commit.gpgSign و revise.gpgSign اولویت دارد. حالت‌های اصلی عملیات (Main modes of operation) -i, --interactive به جای اعمال تغییرات استیج‌شده بر روی ، یک فهرست کارها (todo list) از اقداماتی که باید بر روی کامیت‌های پس از انجام شوند را ویرایش می‌کند. بخش حالت تعاملی (INTERACTIVE MODE) را ببینید. --autosquash, --no-autosquash به جای اعمال مستقیم تغییرات استیج‌شده به ، اقدامات fixup یا squash علامت‌گذاری‌شده با fixup! یا squash! را بین و HEAD جاری به‌طور خودکار انجام می‌دهد. برای اطلاعات بیشتر درباره نحوه عملکرد این اقدامات، بخش حالت تعاملی (INTERACTIVE MODE) را ببینید. این کامیت‌ها معمولاً با git commit --fixup= یا git commit --squash= ایجاد می‌شوند و هدف را با سطر نخست پیام کامیت آن شناسایی می‌کنند. این گزینه می‌تواند با --interactive ترکیب شود تا کارهای تولیدشده پیش از اجرا قابل تغییر و ویرایش باشند. اگر گزینه --autosquash به‌طور پیش‌فرض با استفاده از یک متغیر پیکربندی فعال شده باشد، می‌توان از گزینه --no-autosquash برای لغو و غیرفعال کردن این تنظیم استفاده کرد. بخش پیکربندی (CONFIGURATION) را ببینید. -c, --cut انتخاب تعاملی قطعات تغییر (hunks) از . قطعات انتخاب‌شده بلافاصله پس از هدف به یک کامیت دوم تفکیک می‌شوند. پس از تکمیل تفکیک، پیام‌های هر دو کامیت ویرایش می‌شوند. برای یادگیری نحوه کار با این حالت، بخش «Interactive Mode» از git-add(1) را ببینید. -e, --edit پس از اعمال تغییرات استیج‌شده، پیام کامیت را ویرایش می‌کند. این گزینه می‌تواند با --interactive ترکیب شود تا امکان ویرایش پیام‌های کامیت درون فهرست کارها فراهم شود. برای اطلاعات بیشتر، بخش حالت تعاملی (INTERACTIVE MODE) را ببینید. -m , --message استفاده از مشخص‌شده به عنوان پیام کامیت جدید برای . اگر چندین گزینه -m داده شود، مقادیر آن‌ها به عنوان بندهای جداگانه به یکدیگر الحاق می‌شوند. --version نمایش اطلاعات نسخه و خروج. پیکربندی (CONFIGURATION) پیکربندی توسط git-config(1) مدیریت می‌شود. revise.autoSquash اگر روی true تنظیم شود، هر زمان که --interactive مشخص شده باشد، --autosquash را نیز در بر می‌گیرد. با --no-autosquash لغو می‌شود. مقدار پیش‌فرض false است. اگر تنظیم نشده باشد، مقدار rebase.autoSquash به جای آن استفاده می‌شود. revise.gpgSign اگر روی true تنظیم شود، کامیت‌های جدید با GPG امضا می‌شوند؛ مقدار پیش‌فرض false است. این تنظیم پیکربندی اصلی گیت commit.gpgSign را لغو می‌کند و می‌تواند توسط گزینه‌های خط فرمان --gpg-sign و --no-gpg-sign لغو و بازنویسی شود. حل تداخل (CONFLICT RESOLUTION) هنگامی که تداخلی رخ می‌دهد، git revise تلاش می‌کند آن را به‌طور خودکار با استفاده از سازوکارهای استاندارد گیت حل کند. اگر حل خودکار با شکست مواجه شود، از کاربر خواسته می‌شود تداخل‌ها را به صورت دستی حل کند. در حال حاضر از git-mergetool(1) برای حل تداخل‌ها پشتیبانی نمی‌شود. هیچ تلاشی برای تشخیص تغییر نام فایل‌ها یا پوشه‌ها انجام نمی‌شود. git revise ممکن است در میان تغییر نام‌ها نتایج نامطلوبی ایجاد کند. هنگامی که ردیابی تغییر نام اهمیت دارد، از حالت تعاملی git-rebase(1) استفاده کنید. نکات (NOTES) یک اجرای موفق git revise یک ورودی منفرد به reflog اضافه می‌کند، که اجازه می‌دهد با دستور git reset @{1} لغو (undo) شود. دستورهای ناموفق git revise مخزن شما را تا حد زیادی بدون تغییر باقی می‌گذارند. هیچ کامیت ادغامی نباید بین کامیت هدف و HEAD وجود داشته باشد، زیرا بازنویسی آن‌ها پشتیبانی نمی‌شود. برای اطلاعات بیشتر درباره پیامدهای اصلاح تاریخچه در مخزنی که به اشتراک می‌گذارید، git-rebase(1) را ببینید. حالت تعاملی (INTERACTIVE MODE) دستور git revise از یک حالت تعاملی الهام‌گرفته از حالت تعاملی git-rebase(1) پشتیبانی می‌کند. این حالت با آخرین کامیتی که می‌خواهید «همان‌طور که هست» حفظ شود شروع می‌شود: git revise -i هدف ویژه --root برای بازبینی همه‌چیز تا کامیت ریشه در دسترس است: git revise -i --root یک ویرایشگر به همراه کامیت‌های موجود در شاخه جاری شما پس از کامیت داده‌شده باز خواهد شد. اگر ایندکس دارای هرگونه تغییر استیج‌شده اما کامیت‌نشده باشد، یک ورودی نیز وجود خواهد داشت. pick 8338dfa88912 Oneline summary of first commit pick 735609912343 Summary of second commit index 672841329981 این کامیت‌ها را می‌توان دوباره مرتب کرد تا ترتیبی که در تاریخچه ظاهر می‌شوند تغییر کند. علاوه بر این، دستورهای pick و index می‌توانند برای تغییر رفتارشان جایگزین شوند. در صورت وجود، دستورهای index باید در انتهای فهرست قرار گیرند، یعنی نمی‌توان پس از آن‌ها دستورهای غیر index قرار داد. اگر -e مشخص شده باشد، پیام کامل کامیت گنجانده خواهد شد و هر سطر دستور با ++ آغاز می‌شود. هرگونه تغییر اعمال‌شده در پیام‌های کامیت درون این فایل، بر روی کامیت مورد نظر اعمال خواهد شد و امکان ویرایش همزمان پیام‌های کامیت در مرحله ویرایش فهرست کارها (todo) را فراهم می‌سازد. ++ pick 8338dfa88912 Oneline summary of first commit Body of first commit ++ pick 735609912343 Summary of second commit Body of second commit ++ index 672841329981 دستورهای زیر در تمام حالت‌های تعاملی پشتیبانی می‌شوند: index این تغییرات را کامیت نمی‌کند، بلکه آن‌ها را در ایندکس به صورت استیج‌شده باقی می‌گذارد. سطرهای index باید در انتهای فایل قرار گیرند. pick استفاده از کامیت داده‌شده همان‌طور که هست در تاریخچه. هنگامی که روی ورودی تولیدشده index اعمال شود، کامیت دارای پیام خواهد بود. squash اضافه کردن تغییرات کامیت به کامیت قبلی و باز کردن ویرایشگر برای ادغام پیام‌های کامیت‌ها. fixup مشابه squash، اما به جای ویرایش، پیام این کامیت دور ریخته می‌شود. reword باز کردن ویرایشگر برای ویرایش پیام کامیت. cut انتخاب تعاملی قطعات تغییر (hunks) از کامیت. قطعات انتخاب‌شده بلافاصله پس از آن به یک کامیت دوم تفکیک می‌شوند. پس از تکمیل تفکیک، پیام‌های هر دو کامیت ویرایش می‌شوند. برای یادگیری نحوه کار با این حالت، بخش «Interactive Mode» از git-add(1) را ببینید. گزارش باگ‌ها (REPORTING BUGS) لطفاً اشکالات و درخواست‌های قابلیت را به سامانه ردیابی اشکالات در https://github.com/mystor/git-revise/issues گزارش دهید. کد، مستندات و سایر مشارکت‌ها نیز مورد استقبال قرار می‌گیرند. همچنین ببینید (SEE ALSO) git(1) git-rebase(1) git-add(1) حق نشر (COPYRIGHT) 2018-2026, Nika Layzell 0.8.0 February 22, 2026 GIT-REVISE(1)