حذف فایل ها
برای حذف یک فایل از گیت، باید آن را از فایلهای بررسی شدهتان حذف کنید (بهعبارت دقیقتر، آن را از منطقه مرحله آماده سازی خود حذف کنید) و سپس ثبت کنید. دستور git rm
این کار را انجام میدهد و همچنین فایل را از دایرکتوری کاری شما حذف میکند تا در دور بعدی بهعنوان یک فایل بدون بررسی نشان داده نشود. اگر فقط فایل را از دایرکتوری کاری خود حذف کنید، در بخش "Changes not staged for commit" (یعنی بخش unstaged) خروجی git status
شما نشان داده میشود:
$ rm PROJECTS.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: PROJECTS.md
سپس، اگر git rm
را اجرا کنید، حذف فایل را مرحلهبندی میکند:
$ git rm PROJECTS.md
rm 'PROJECTS.md'
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: PROJECTS.md
بار بعد که ثبت کنید، فایل حذف و دیگر پیگیری نخواهد شد. اگر فایل را تغییر دادهاید یا قبلاً آن را به منطقه مرحلهبندی اضافه کردهاید، باید با گزینه -f حذف را بهصورت اجباری انجام دهید. این یک ویژگی ایمنی است تا از حذف تصادفی دادههایی که هنوز در یک عکسالعمل ثبت نشدهاند و نمیتوانند از گیت بازیابی شوند، جلوگیری کند.
مفهوم مفید دیگری که ممکن است بخواهید انجام دهید، نگهداشتن فایل در درخت کاری (working tree) خود، اما حذف آن از ناحیهی مرحله بندی. به عبارت دیگر، ممکن است بخواهید فایل را روی هارد خود نگهدارید اما دیگر گیت آن را ردیابی نکند. این کار بهخصوص زمانی مفید است که فراموش کردهاید چیزی را به فایل .gitignore اضافه کنید و بهطور تصادفی آن را مرحله بندی کردهاید، مانند یک فایل لاگ بزرگ یا مجموعهای از فایلهای کامپایل شده با پسوند .a. برای انجام این کار، از گزینه --cached استفاده کنید:
$ git rm --cached README
شما میتوانید فایلها، دایرکتوریها و الگوهای فایلگلوب را به دستور git rm
پاس دهید. به این معنی که میتوانید کارهایی مانند زیر را انجام دهید:
$ git rm log/*.log
به backslash در جلوی * توجه کنید. این کار ضروری است زیرا گیت علاوه بر گسترش نام فایل توسط شل شما، خود نیز گسترش نام فایل را انجام میدهد. این دستور تمام فایلهایی که پسوند .log در دایرکتوری log/ دارند را حذف میکند. یا میتوانید کاری مشابه این انجام دهید:
$ git rm *~
این دستور تمام فایلهایی که نامشان با ~ به پایان میرسد را حذف میکند.