تاریخچه در Git — git log و git diff

مشاهده تاریخچه کامیت‌ها با git log، مقایسه نسخه‌ها با git diff و پیدا کردن هر تغییری در پروژه.

تاریخچه — قدرت اصلی گیت

یکی از بزرگ‌ترین مزیت‌های گیت این است که هیچ چیزی گم نمی‌شود. هر کامیت با جزئیات کامل ذخیره می‌شود و شما می‌توانید هر لحظه از تاریخچه را ببینید یا مقایسه کنید.

دستور git log

پرکاربردترین دستور برای دیدن تاریخچه:

git log

خروجی نمونه:

commit a1b2c3d4e5f6... (HEAD -> main)
Author: علی محمدی <ali@example.com>
Date:   Mon Jan 15 10:30:00 2026 +0330

    افزودن صفحه ورود کاربر

commit f6e5d4c3b2a1...
Author: علی محمدی <ali@example.com>
Date:   Sun Jan 14 18:45:00 2026 +0330

    اولین کامیت: ساخت پروژه

کامیت‌ها از جدید به قدیم نمایش داده می‌شوند. علامت HEAD -> main یعنی الان روی شاخه main و در آخرین کامیت هستید.

فرمت‌های کاربردی git log

خلاصه یک‌خطی (رایج‌ترین)

git log --oneline
# a1b2c3d (HEAD -> main) افزودن صفحه ورود کاربر
# f6e5d4c اولین کامیت: ساخت پروژه

نمایش گرافیکی شاخه‌ها

git log --oneline --graph --all

با این دستور شاخه‌ها و ادغام‌ها به‌صورت گرافیکی (خطوط و ستاره‌ها) نمایش داده می‌شوند.

فقط n کامیت آخر

git log -3

تاریخچه یک فایل خاص

git log --oneline hello.txt

چه کسی چه فایلی را تغییر داده؟

git log --stat

نشان می‌دهد هر کامیت چند فایل را تغییر داده و هر فایل چند خط اضافه/کم شده.

جستجو در پیام کامیت‌ها

git log --grep="باگ"

تاریخچه یک نویسنده خاص

git log --author="علی"

دستور git diff — مقایسه نسخه‌ها

git diff تفاوت‌ها را خط‌به‌خط نشان می‌دهد:

تغییرات stage نشده

git diff

تفاوت بین working directory و staging area:

diff --git a/hello.txt b/hello.txt
- سلام دنیا
+ سلام دنیا از لرنینگ سیتی!
نمادمعنی
- (قرمز)خط حذف‌شده یا تغییرکرده
+ (سبز)خط اضافه‌شده

تغییرات stage شده

git diff --staged

مقایسه دو کامیت

git diff a1b2c3d f6e5d4c

مقایسه دو شاخه

git diff main feature-search

دستور git show — جزئیات یک کامیت

git show a1b2c3d

اطلاعات کامل کامیت + تغییرات آن را نشان می‌دهد.

git blame — خط آخر کی نوشته؟ 😄

git blame hello.txt

برای هر خط فایل نشان می‌دهد چه کسی، کِی و در کدام کامیت آن را نوشته — برای دیباگ و بازبینی کد فوق‌العاده است!

a1b2c3d (علی محمدی 2026-01-15 10:30:00 +0330 1) سلام دنیا
f6e5d4c (علی محمدی 2026-01-14 18:45:00 +0330 2) خط دوم

خلاصه

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

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