منو سایت

  • خانه
  • وبلاگ
  • چگونه Git فایل های ردیابی شده را فراموش کند

چگونه Git فایل های ردیابی شده را فراموش کند

 تاریخ انتشار :
/
  وبلاگ
چگونه Git فایل های ردیابی شده را فراموش کند

کاری کنید که Git فایل‌های ردیابی شده قبلی را در gitignore. نادیده بگیرد

در Git می توانید استفاده کنید .gitignore فایل برای جلوگیری از به تازگی اضافه شده فایل های ردیابی در آینده توجه داشته باشید که افزودن یک فایل از قبل پیگیری شده به .gitignore آن را از ردیابی حذف نمی کند! اگر بخواهید فایلی را که قبلاً ردیابی شده است بردارید، این مشکل ایجاد می کند.

خوشبختانه، Git دستوری دارد که می توانید برای رفع این مشکل اجرا کنید:

git update-index --skip-worktree <file-name>

جایی که می توانید جایگزین کنید <име-на-файл> با نام فایل یا دایرکتوری که می خواهید ردیابی کنید.

و برای لغو این عمل، اجرا کنید:

git update-index --no-skip-worktree <file-name>

من مطمئن هستم که این پاسخ سریع برای کاربران متبحر Git کافی است. اما اگر مطمئن نیستید چه کاری انجام می دهد، لطفاً ادامه دهید!

این راهنما به شما آموزش می‌دهد که چگونه Git را مجبور کنید فایل‌های ردیابی شده قبلی را نادیده بگیرد. شما یک مثال خاص را مشاهده خواهید کرد که مشکلی را که هنگام نادیده گرفتن فایل ردیابی شده رخ می دهد و نحوه رفع مشکل را برجسته می کند.

مشکل با .gitignore.

به عنوان یک کاربر Git، اهمیت بله را می دانید نه هر فایل پروژه را به مخزن راه دور فشار دهید. به عنوان مثال، فایل های سیستم عامل (مانند Thumbs.db یا .DS_Store) فایل های مخصوص سیستم عامل هستند که برای هر توسعه دهنده متفاوت است. علاوه بر این، آنها به هیچ وجه بر پروژه تأثیر نمی گذارند. این نوع فایل ها نباید برای جلوگیری از ایجاد سربار ردیابی شوند.

برای نادیده گرفتن ردیابی فایل، می‌توانید یک فایل .gitignore بنویسید که در آن می‌توانید نام فایل‌ها، دایرکتوری‌ها یا پسوندها را نادیده بگیرید.

با این حال، الف .gitignore فایل فقط از ردیابی فایل های آینده جلوگیری می کند. آی تی فایل های ردیابی شده فعلی را حذف نمی کند از ردیابی این ممکن است خلاف واقع باشد، زیرا ممکن است فکر کنید که فایل‌هایی که در آن هستند .gitignore به طور خودکار از فهرست حذف خواهد شد.

یک مثال

اجازه دهید مشکل را با .gitignore با یک مثال

من دارم پروژه مثال دایرکتوری که تحت کنترل نسخه است. دو فایل در پوشه وجود دارد، README.md، و test.txt.

یک پوشه با یک فایل readme و یک فایل متنی

حالا بیایید a ایجاد کنیم .gitignore فایل و اضافه کنید test.txt در آن فایل کنید و تغییرات را انجام دهید.

$ touch .gitignore
$ echo "test.txt" > .gitignore
$ git add .gitignore
$ git commit -m "Untrack test.txt"

با این تغییر شما فرض می کنید که تغییر به test.txt فایل دیگر ردیابی نمی شود درست است؟

اما بیایید تغییری در آن ایجاد کنیم test.txt فایل.

فایل متنی با متن نمونه

حالا ببینیم چیه وضعیت git فرمان می گوید:

اجرای وضعیت git در ترمینال

همانطور که می بینید، هیچ چیز تغییر نکرده است. شما هنوز تغییرات را می بینید و می توانید آنها را درگیر و فشار دهید.

$ git add .
$ git commit -m "These changes shouldn't go through"
$ git push

اما این دستور با موفقیت انجام می شود و تغییرات به ریموت منتقل می شود.

نتیجه فراخوانی موفقیت آمیز git push روی ترمینال

اگرچه اضافه کردیم test.txt به .gitignore فایل، تغییرات همچنان ردیابی می شوند و می توانید تغییرات فایل را به منبع راه دور فشار دهید.

این اتفاق می افتد زیرا test.txt فایل قبلا ردیابی شده است همانطور که یاد گرفتید، افزودن یک فایل به .gitignore فایل فایل های موجود را از ردیابی حذف نمی کند. این فقط از ردیابی فایل های آینده جلوگیری می کند.

برای ردیابی فایلی که قبلا ردیابی شده است و اکنون در .gitignoreشما باید شروع کنید git update-index –skip-worktree <име-на-файл>. در مثال ما، بیایید انجام دهیم:

$ git update-index --skip-worktree test.txt

پس از اجرای این دستور، اجازه دهید تغییری در آن ایجاد کنیم test.txt فایل.

فایل متنی را با اضافه کردن متن ساختگی بیشتر به آن تغییر دهید

حالا بیایید فرار کنیم وضعیت git.

git status را برای بررسی تغییرات در فایل متنی اجرا کنید

عالی، حالا به test.txt فایل در واقع نادیده گرفته می شود.

خلاصه

امروز یاد گرفتید که چگونه Git را با فراموش کردن فایل‌های ردیابی شده که در حال حاضر در آنجا هستند، نادیده بگیرید .gitignore.

برای رسیدن به خانه، راه روشنی برای رسیدن به این هدف وجود دارد. ابتدا یک نام فایل به آن اضافه کنید .gitignore فایل. سپس به Git بگویید درخت کاری این فایل را نادیده بگیرد:

git update-index --skip-worktree <file-name>

این دستور از ردیابی فایل (یا دایرکتوری) مشخص شده پس از آن صرفنظر می کند رد شدن از درخت کار پرچم.

با تشکر برای خواندن. کد نویسی مبارک!

همچنین بخوانید

تفاوت بین “git add . ” و “git add -A”