Revert — خنثی‌سازی امن کامیت‌ها

برگرداندن امن تغییرات با ساخت کامیت معکوس — بهترین روش undo برای تاریخچه‌های اشتراکی و push شده.

Revert چیست؟

git revert یک کامیت را خنثی می‌کند — اما نه با حذف آن! بلکه با ساخت یک کامیت جدید که دقیقاً برعکس تغییرات قبلی عمل می‌کند. مثل پخش کردن یک ویدیو به عقب و ضبطش به‌عنوان ویدیوی جدید.

چرا Revert امن‌ترین undo است؟

تاریخچه گیت مثل یک دفترچه ثبت است — نوشته‌ها پاک نمی‌شوند، فقط نوشته جدید اضافه می‌شود:

استفاده از revert

# خنثی کردن آخرین کامیت:
git revert HEAD

# خروجی:
# [main f6e5d4c] Revert "افزودن فرم تماس"
#  1 file changed, 12 deletions(-)

یک کامیت جدید ساخته شد که تغییرات «افزودن فرم تماس» را برمی‌گرداند.

خنثی کردن کامیت خاص

git revert a1b2c3d

خنثی کردن چند کامیت (بدون کامیت‌های میانی)

git revert a1b2c3d e5f6g7h

خنثی کردن یک بازه

# از قدیمی به جدید (توجه به ترتیب!):
git revert OLDER^..NEWER
# مثال:
git revert a1b2c3d^..e5f6g7h

revert با تعارض

اگر کامیت‌های بعدی روی همان بخش‌ها کار کرده باشند، revert تعارض می‌دهد — همان فرایند حل تعارض معمولی:

git revert HEAD
# error: could not revert a1b2c3d...
# hint: after resolving the conflicts, mark the corrected paths
# hint: with "git add <paths>" and commit the result
  1. فایل‌های تعارض‌دار را حل کنید
  2. git add .
  3. git revert --continue (یا برای فرار: git revert --abort)

سوئیچ --no-commit

اگر می‌خواهید چند revert را در یک کامیت جمع کنید:

git revert --no-commit a1b2c3d
git revert --no-commit e5f6g7h
git commit -m "خنثی کردن دو کامیت باگ‌دار"

revert یا reset؟ (پیش‌نمایش)

ویژگیrevertreset
تاریخچهحفظ می‌شود + کامیت جدیدبازنویسی/حذف می‌شود!
برای شاخه push شده✅ امن❌ خطرناک
برگرداندن به گذشته دورکامیت‌های معکوس زیادیک‌جا ✅

در مبحث بعدی reset را کامل یاد می‌گیرید.

خلاصه

این مبحث بخشی از دوره آموزش کامل Git است.

ابزارهای مرتبط