ما هي الملفات المتعقبة والملفات غير المتعقبة في سياق GIT؟

StackOverflow https://stackoverflow.com//questions/9663507

  •  12-12-2019
  •  | 
  •  

سؤال

أنا جديد على جيت.أود أن أعرف ما هي تتبع و غير متعقب الملفات؟لقد قرأت "Pro Git"، لكني ما زلت لا أستطيع الفهم تمامًا.

هل يمكن لأحد أن يشرح لي الفرق بين الاثنين من خلال تقديم مثال؟

هل كانت مفيدة؟

المحلول

يتم تعقب الملف إذا كان تحت التحكم في الإصدار.

كمثال صغير، سيكون لمشروع C++

Makefile
main.cpp
interface.hpp
worker.cpp

كملفات مصدر؛يمكنك وضع هذه تحت التحكم في الإصدار.أثناء البناء،

main.o
worker.o
myapp

يتم إنشاؤها؛هذه لا تنتمي إلى التحكم في الإصدار، لذلك لا تستخدمها git add عليهم.يبقون غير متعقب, لأن git لا يهتم بما يحدث لهم.حتى تقوم بإضافتهم إليها .gitignore (يتم تجاهل ملفات .o افتراضيًا)، ولا يعرف git ما إذا كنت تريد إضافتها أو تجاهلها، لذلك يعرضها مع git status الأمر حتى تتخذ القرار.

ما إذا كان يتم تعقب الملف أم لا يعتمد أيضًا على الإصدار - لنفترض أنك تقوم بالإنشاء التلقائي worker.cpp وإزالته من التحكم في الإصدار في إصدار لاحق.لم يتم تعقب الملف الآن في هذا الإصدار.عندما تعود إلى إصدار كان الملف فيه لا يزال تحت التحكم في الإصدار، سيرفض git الكتابة فوق هذا الملف أثناء الخروج.

نصائح أخرى

ال فصل كتاب جيت برو الذي ذكرته يحاول تفصيل فكرة الملف الذي لم يتم تعقبه:

عند الخروج من SHA1 معين، تحصل على "لقطة" لجميع الملفات التي تم إصدارها.
لن يتم تعقب أي ملف لم تتم الإشارة إليه بهذه اللقطة.إنها ليست جزءًا من شجرة Git:
يرى "git - كيفية معرفة ما إذا كان الملف قد تم تعقبه (عن طريق رمز الخروج من Shell)؟"

يجب عدم تعقب أي ملف تريد تجاهله (كما هو موضح في هذا صفحة مساعدة جيثب).

لاحظ أن git لن يتجاهل الملف الذي تم تعقبه بالفعل قبل إضافة قاعدة إلى هذا الملف لتجاهله.
في مثل هذه الحالة، يجب إلغاء تعقب الملف، عادةً باستخدام git rm --cached filename

enter image description here

الملفات المتعقبة هي تلك التي تتم معالجتها (يتم التحكم في الإصدار) بواسطة Git، والتي تمت إضافتها والالتزام بها مرة واحدة.الملفات التي لم يتم تعقبها هي في أغلب الأحيان ملفات لا تريد التحكم فيها، لأنها على سبيل المثال يتم إنشاؤها بواسطة المترجم الخاص بك.

يمكنك إضافة ملفات لم يتم تعقبها إلى ملف .gitignore الملف، بحيث لا يسألك Git عما إذا كنت تريد تتبعه.

من منظور تقني بحت: الملف المتعقب هو ببساطة ملف موجود في مؤشر GIT.ليقول إنه ملف "ضمن عنصر تحكم الإصدار" مضلل، لأن هذا يقترح أنه ملف قام به في الريبو - وهذا ليس ضروريا ليتم تتبع ملف.

عندما تقوم بتطبيق Repo جيتو جديد، فإن الفهرس فارغا وجميع الملفات في دليل العمل الخاص بك غير مفهوم.يتم تتبع الملف عند إضافته إلى الفهرس - عند هذه النقطة يتم إنشاء HASH SHA-1 لذلك، يتم وضع إدخال كائن في مجلد .git \ Objects.من تلك اللحظة، يتمكن GIT من مقارنة محتويات / اسم نفس الملف في دليل العمل من أجل تتبع التغييرات وإعادة تسليمها وحذفها.طالما أن الملف موجود في الفهرس، يتم تعقبه.

تذكر أن كل ملف في دليل عملك يمكن أن يكون في واحدة من دولتين: تعقب أو غير مهذب.باختصار الملفات المتعقبة هي الملفات التي تعرفها git.الملفات غير المتناثرة هي كل شيء آخر - أي ملفات في دليل العمل الخاص بك والتي لم تكن في لقطة الأخيرة وليس في منطقة التدريج الخاصة بك.الملفات المتعقبة هي الملفات التي كانت في اللقطة الأخيرة؛يمكن أن يكونوا غير محددين أو تعديلهم أو نظموا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top