كيفية العثور على الاشياء في بوابة

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

يقولون دائمًا أن الشيء العظيم في Git هو أنك [تقريبًا] لم تفقد أبدًا أي تاريخ. إذن كيف يمكنك الوصول إلى هذا التاريخ والاستفادة منه؟

مهلا ، جيت. من كان آخر شخص قام بتغيير هذا الملف؟

بوابة سجل foo.c

ماذا غيروا؟

بوابة سجل - patch foo.c

بدلا من ذلك ، استخدم بوابة المعرض جنبا إلى جنب مع تجزئة الالتزام.

بوابة تظهر 

مهلا ، جيت. هل تستطيع أن تريني من غير هذا الملف ، سطراً؟

بوابة اللوم foo.c

مهلا ، جيت. متى تم عرض هذا الخطأ؟

.. عندما تعرف سطر الكود السيئ

استخدم Git’s "Pickaxe" مثل عالم آثار الكود للبحث في الإلتزامات حتى تجد متى تم تقديم سلسلة معينة.

بوابة الدخول - S "سطر غير صحيح من الكود"

.. عندما لا تكون متأكدًا من سبب هذا الخطأ

عندما لا تعرف الالتزام الذي أدخل الخطأ ، استخدم git bisect للعثور على الالتزام السيئ بسرعة عبر خوارزمية البحث الثنائي.

بوابة بداية bisect
بوابة تشريح سيئة الرأس
بوابة تشريح جيد <الالتزام>

الآن ستقوم bisect بتحديد التزام في منتصف هذا النطاق والتحقق منه نيابة عنك. قم بممارسة الكود وتحقق من وجود الخطأ أم لا. إذا لم يكن الخطأ موجودًا في هذا الالتزام ، فأدخل:

بوابة bisect جيدة

إذا كان الرمز لا يزال معطلاً ، فأدخل:

بوابة تشريح سيئة

في كلتا الحالتين ، سوف يستمر bisect بهذه الطريقة حتى يجد الالتزام الدقيق الذي أدخل الخطأ.

بمجرد العثور على الخطأ وتنظيفه والعودة إلى الرأس الأصلي.

git bisect reset

مؤتمتة بالكامل بوابة جيت

إذا كان لديك نص برمجي يجمع التعليمات البرمجية ويقوم بإجراء اختباراتك ، فيمكنك استخدام Git bisect للعثور على الالتزام السيئ نيابة عنك ، تلقائيًا. بالإضافة إلى ذلك ، إنها بطانة واحدة.

git bisect start HEAD  run ./build_script.sh

الذهاب تناول بعض القهوة. عندما تعود ، ستعرف أي التزام قدم هذا الخطأ.

مهلا ، جيت. كيف يمكنني التحقق من إصدار هذا الملف منذ أسبوعين؟

إذن كل التغييرات التي طرأت على foo.c خلال الأسبوعين الماضيين كانت غير مرغوب فيها تمامًا ، هاه؟ أو ترغب فقط في اللعب باستخدام إصدار أقدم من الشفرة.

أولاً ، ابحث عن إصدار الملف الذي تريد سحبه

سيُظهر لك ذلك جميع الالتزامات التي تغيرت foo.c في الأسبوعين الأخيرين ، بدءًا من أقدم التزام.

بوابة سجل - منذ = two.weeks.ago - عكس - foo.c

لاحظ اندفاعة مزدوجة. هذا يخبر Git أنه لا ينبغي أن يتوقع أي مفاتيح إضافية. ستكون الوسيطة التالية اسم ملف.

تحقق من إصدار الملف من التزام آخر

الآن بعد العثور على الالتزام الذي يحتوي على إصدار الملف الذي تهتم به ، انسخ علامة التجزئة الخاصة به والتأكد من ذلك.

بوابة الخروج  foo.c

يمكنك استخدام نفس النمط للتحقق من أي ملف من أي التزام. على سبيل المثال ، قمت بإجراء تغيير على foo.c في فرع آخر ، وترغب في إجراء نفس التغييرات في فرعك الحالي.

بوابة الخروج SomeOtherBranch foo.c

إذا كنت لا تريد سحب الملف ، ولكن فقط تريد عرض ملف في فرع آخر.

git show SomeOtherBranch: foo.c

مهلا ، جيت. الذي ارتكب معظم الأوقات في الريبو كله؟

هذا لا طائل منه ، ولكن يمكن أن يكون متعة مع ذلك. كما يمكن أن يساعد فريقك على أن يكون أكثر وعياً بشأن تقسيم المهام إلى مهام أصغر وأكثر تركيزًا. بشكل عام ، كلما كان الالتزام أصغر ، كانت وثائقه أفضل ، وكان يتم مراجعته بشكل أفضل أثناء مراجعة التعليمات البرمجية.

بوابة مختصرة -s -n

مهلا ، جيت. هل هناك foo.c في هذا المستودع؟

بوابة ls- الملفات foo.c

يفهم ملف git ls أيضًا تخطي الملفات:

بوابة ليرة سورية الملفات *. ج

مهلا ، جيت. هل يوجد ملف يحتوي على "foo bar"؟

git grep "foo bar"

لإظهار أرقام الأسطر وعناوين الملفات واستخدام بحث غير متحسس لحالة الأحرف:

git grep -i - عنوان - رقم السطر "foo bar"

مهلا ، جيت. أرني كل التزامات Cueball

بوابة سجل - المؤلف = كرة قدم

مهلا ، جيت. أرني الالتزامات من نطاق زمني محدد

git log --after = "April 1، 2016" - before = "April 30، 2016"

مهلا ، جيت. أرني الالتزامات التي تم فيها تغيير خطوط معينة في ملف

بوابة الدخول -L 1،1: foo.c

أرني عندما تم تغيير طريقة معينة في الفصل.

بوابة الدخول -L: bar: foo.c

مهلا ، جيت. كيف يختلف فرعي عن السيد؟

بوابة فرق سيد ..

أو..

بوابة الكرز الخامس

فقط عرض أسماء الملفات التي تغيرت

بوابة فرق - اسم فقط سيد ..

يا جيت. كيف يمكنني تصور الإلتزامات والفروع؟

بوابة سجل - على الخط - الجرافيك - جميع - abbrev- الالتزام

يجب أن يساعدك ذلك في المرة القادمة التي تحتاج فيها إلى العثور على أشياء في Git. إذا كان لديك نصيحة مذهلة للعثور على جميع الأشياء Git ، اسمحوا لي أن أعرف في التعليقات. قد أقوم بتحديث هذا المنشور ليشمل تعليقك.

(ظهرت في الأصل على tygertec.com)