فایل‌های جدید و git status

وقتی فایل جدیدی به پروژه اضافه می‌کنید چه اتفاقی می‌افتد؟ آشنایی با فایل‌های untracked و دستور git status.

فایل‌های جدید در گیت

وقتی در مخزن گیت فایل جدیدی بسازید، گیت آن را می‌بیند اما هنوز دنبال نمی‌کند. به چنین فایلی Untracked (ردیابی‌نشده) می‌گویند.

آزمایش کنیم!

داخل مخزنی که در مبحث قبل ساختید، یک فایل جدید بسازید:

echo "سلام دنیا" > hello.txt

حالا وضعیت را بررسی کنید:

git status

خروجی:

On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        hello.txt

nothing added to commit but untracked files present (use "git add" to track)

تفسیر خروجی git status

پیاممعنی
On branch mainروی شاخه main هستید
No commits yetهنوز هیچ کامیتی ثبت نشده
Untracked files: hello.txtفایل hello.txt جدید است و گیت آن را دنبال نمی‌کند
nothing added to commitچیزی برای کامیت آماده نیست

وضعیت‌های مختلف فایل در گیت

هر فایل در گیت می‌تواند در یکی از این وضعیت‌ها باشد:

وضعیتمعنی
Untrackedفایل جدید است؛ گیت اصلاً آن را دنبال نمی‌کند
Unmodifiedفایل دنبال می‌شود و از آخرین کامیت تغییری نکرده
Modifiedفایل دنبال می‌شود اما از آخرین کامیت تغییر کرده
Stagedتغییرات فایل برای کامیت بعدی علامت خورده

چرخه زندگی یک فایل در گیت

Untracked → (git add) → Staged → (git commit) → Unmodified
                                                    ↓
                                          (ویرایش فایل)
                                                    ↓
                                               Modified
                                                    ↓
                                          (git add) → Staged → ...

فرمت خروجی کوتاه‌تر

اگر خروجی طولانی را دوست ندارید، از فرمت کوتاه استفاده کنید:

git status -s
# ?? hello.txt
نمادمعنی
??Untracked (ردیابی‌نشده)
MModified (تغییرکرده)
AAdded (به staging اضافه‌شده)
DDeleted (حذف‌شده)

گیت فقط فایل‌ها را می‌بیند، پوشه‌های خالی را نه!

گیت پوشه‌های خالی را دنبال نمی‌کند — فقط فایل‌ها مهم‌اند. اگر پوشه خالی بسازید، در git status اصلاً دیده نمی‌شود. یک راه‌حل رایج، ساخت فایلی به نام .gitkeep داخل پوشه است.

چرا گیت خودکار فایل‌ها را دنبال نمی‌کند؟

این یک تصمیم هوشمندانه است! فرض کنید فایل‌های موقت، لاگ یا فایل‌های حاوی رمز عبور در پروژه داشته باشید. اگر گیت خودکار همه‌چیز را دنبال می‌کرد، این فایل‌های حساس هم وارد تاریخچه می‌شدند. با علامت‌گذاری دستی (git add)، شما کنترل کامل دارید که چه چیزی وارد تاریخچه شود.

در مبحث .gitignore یاد می‌گیرید چطور به گیت بگویید بعضی فایل‌ها را برای همیشه نادیده بگیرد.

خلاصه

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

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