Commitها و Diff در Git؛ بررسی تغییرات بین نسخهها
Chapter 6: Commits and Diff

Commit در Git مانند گرفتن یک عکس فوری (Snapshot) از کل پروژه است. هر بار که شما Commit میکنید، تغییرات ذخیره میشوند و تاریخچهی پروژه ساخته میشود. اما فقط ذخیره کردن کافی نیست؛ ما باید بتوانیم ببینیم چه چیزی تغییر کرده است. اینجا جایی است که مفهوم Diff وارد میشود.
در این فصل یاد میگیریم:
- Commit چیست و چه ساختاری دارد.
- چگونه میتوانیم تغییرات بین Commitها را مشاهده کنیم.
- دستورات کاربردی برای مدیریت Commitها و Diff.
Commit در Git چیست؟
هر Commit یک شیء (Object) در Git است که شامل اطلاعات زیر است:
- یک Snapshot از پروژه (با اشاره به یک Tree).
- پیام Commit که توضیح تغییرات است.
- نویسنده (Author) و زمان ایجاد.
- اشاره به Commit والد (Parent Commit).
به همین دلیل Commitها یک زنجیرهی پیوسته را تشکیل میدهند که تاریخچه پروژه را میسازد.
ایجاد Commit جدید
بعد از تغییر فایلها و افزودن آنها به Staging Area (git add
):
git commit -m "Add about page"
حالا یک Snapshot جدید در تاریخچه ایجاد شده است.
مشاهده Commitها
برای دیدن تاریخچه Commitها:
git log
خروجی شامل Hash Commit، نام نویسنده، تاریخ و پیام Commit است.
برای مشاهدهی کوتاهتر:
git log --oneline
مثال:
a1b2c3d Add about page
e9f8g7h First commit: add index.html
Diff در Git چیست؟
Diff به معنای «تفاوت» است. Git با استفاده از Diff نشان میدهد چه تغییراتی بین فایلها، Commitها یا شاخهها ایجاد شده است.
دستورات کاربردی Diff
1. مشاهده تغییرات در Working Directory
قبل از Stage کردن:
git diff
این دستور تغییرات بین فایلهای ویرایششده و آخرین Snapshot (HEAD) را نشان میدهد.
2. مشاهده تغییرات Staging Area
بعد از git add
، برای دیدن تغییراتی که آماده Commit شدن هستند:
git diff --staged
3. مشاهده تغییرات بین دو Commit
git diff commit1 commit2
مثال:
git diff a1b2c3d e9f8g7h
4. مشاهده تغییرات آخرین Commit
git show
یا بهطور دقیقتر:
git show HEAD
خواندن خروجی Diff
خروجی Diff معمولاً به این شکل است:
- خطوطی که با
-
شروع میشوند → حذف شدهاند. - خطوطی که با
+
شروع میشوند → اضافه شدهاند.
مثال:
- <h1>Hello Git</h1>
+ <h1>Hello Git World</h1>
چرا Diff مهم است؟
- به شما امکان میدهد قبل از Commit کردن مطمئن شوید تغییرات درست هستند.
- کمک میکند تفاوتها بین نسخههای مختلف پروژه را سریع پیدا کنید.
- برای بررسی کد (Code Review) و رفع باگها حیاتی است.
جمعبندی
- Commit واحد اصلی ذخیره تغییرات در Git است.
- Diff ابزاری برای مقایسه تغییرات بین Commitها، شاخهها یا فایلهاست.
- با استفاده از دستورات
git diff
،git show
وgit log
میتوانید تغییرات پروژه را ردیابی کنید.
در فصل بعد (Chapter 7: Press the Undo Button) یاد میگیریم که اگر اشتباهی کردیم، چطور میتوانیم تغییرات یا Commitها را به عقب برگردانیم.