دليلك الشامل لاستخدام بحث GitHub بفعالية واحترافية

دقائق القراءة: 9

يُعد GitHub منصة تعاون برمجية شهيرة للمطورين. يمكنك استخدامها لمشاركة وإدارة والمساهمة في قواعد الأكواد مفتوحة المصدر، وحفظ وعمل على الأكواد الخاصة بك، والمزيد. ولكي تصبح مستخدمًا أكثر فعالية لـ GitHub، ستحتاج إلى معرفة كيفية البحث داخل المنصة. يتضمن ذلك استخدام المؤهلات (qualifiers) لتصفية ملايين المستودعات ومليارات الأسطر من الأكواد بكفاءة. تساعد الاستعلامات الدقيقة في تحديد تعريفات دوال محددة، مشاريع، أشخاص، مشكلات (issues)، طلبات سحب (pull requests)، أكواد، ثغرات أمنية، أو فرص مساهمة. في هذا الدليل، ستتعلم كيفية استخدام بحث GitHub، سواء كنت مبتدئًا أو مطورًا محترفًا.

ماذا سنتناول؟

وظائف البحث الأساسية

  • كيفية البحث عالمياً (Globally)
  • كيفية إجراء بحث محدد النطاق (لمستودع أو منظمة معينة)

وظائف البحث المتقدمة

  • مؤهلات البحث (Search Qualifiers)
  • كيفية حفظ عمليات البحث
  • كيفية إدارة عمليات البحث المحفوظة على GitHub

لماذا نحتاج إلى بحث GitHub المتقدم؟

الخلاصة

وظائف البحث الأساسية

يشير البحث الأساسي هنا إلى وظائف البحث الأكثر شيوعًا والتي تتسم بالسرعة وسهولة الاستخدام. للبدء، انقر على أيقونة بحث GitHub، واكتب استعلامك، وسيعرض GitHub النتائج. باستخدام البحث الأساسي، يمكنك البحث عالميًا عبر GitHub بأكمله أو تضييق نطاق بحثك ليشمل مستودعًا أو منظمة محددة.

كيفية البحث عالمياً (Globally)

للبحث على GitHub، انقر على علامة تبويب البحث أو اضغط على مفتاح / لفتح شريط البحث. للبحث عالميًا (عبر GitHub بالكامل)، افتح حقل إدخال البحث، واكتب استعلامك، ثم حدد “Search all of GitHub” من القائمة المنسدلة أو اضغط Enter. بعد النقر على زر “Search all of GitHub“، سيتم توجيهك إلى صفحة تعرض جميع النتائج المتعلقة باستعلامك.

كيفية إجراء بحث محدد النطاق (لمستودع أو منظمة معينة)

للبحث داخل مستودع أو منظمة محددة، انتقل إلى صفحة المستودع أو المنظمة، أدخل استعلامك في حقل البحث في الأعلى، واضغط Enter. على سبيل المثال، إذا كنت تبحث عن اسم ملف يبدأ بـ “pnpm” في مستودع frontendweb:

في شريط البحث، سترى أربعة اقتراحات: الأول هو “Search in this repository“، والثاني هو “Search in this organization“، والثالث هو “Search all of GitHub“، والأخير هو قسم الكود “Display similar files“. النقر على ملف يفتحه في محرر الويب الخاص بـ GitHub.

وظائف البحث المتقدمة

بالإضافة إلى شريط بحث GitHub، يمكنك البحث على GitHub باستخدام صفحة البحث المتقدم. يتيح لك بحث GitHub المتقدم العثور على أكواد ومستودعات ومشكلات محددة. يمكنك تصفية عمليات البحث الخاصة بك بناءً على عوامل مثل عدد النجوم (stars)، المالكين (owners)، التشعبات (forks)، المتابعين (followers)، لغة البرمجة (programming language)، وتواريخ الإنشاء. عند إكمال حقول البحث المتقدم، يتم إنشاء استعلامك تلقائيًا في شريط البحث العلوي، ويمكنك النقر على زر Search.

كمثال أساسي، دعنا نبحث عن React على GitHub، بما في ذلك طلبات السحب (pull requests) والدفع (push requests) الأخيرة، المشكلات (issues)، الالتزامات (commits)، المناقشات (discussions)، وما إلى ذلك، المتعلقة بـ ReactJS. يمكننا استخدام وظيفة البحث المتقدم في GitHub لهذا الغرض. اكتب “React” في حقل الإدخال الأول كنص وأضف المالك (owner)، في هذه الحالة Facebook، للعثور على كل ما يتعلق بـ ReactJS في منظمة أو مستخدم Facebook. بعد النقر على زر Search، يجب أن ترى صفحة النتائج التالية:

كما ترى، تتيح لك وظيفة البحث المتقدم في GitHub العثور على أكواد ومستودعات ومشكلات محددة باستخدام مجموعة قوية من المؤهلات والخيارات. دعنا نتحدث أكثر عن المؤهلات الآن.

مؤهلات البحث (Search Qualifiers)

يمكنك تصفية بحثك مباشرة باستخدام مؤهلات رئيسية متنوعة. يمكننا تقسيم هذه المؤهلات إلى أقسام مختلفة:

خيارات متقدمة (Advanced Options)

  • من هؤلاء المالكين (From these owners): اكتب اسم المستخدم أو المنظمة المحددة، مثل GitHub، Atom، Electron، Octokit، وما إلى ذلك.
  • في هذه المستودعات (In these repositories): اكتب اسم المستخدم أو المنظمة المحددة، مثل Facebook/React، Vercel/Next.js، وما إلى ذلك.
  • تم الإنشاء في هذه التواريخ (Created on these dates): حدد تاريخ إنشاء المستودع، على سبيل المثال >2016-04-29، =2016-04-29، وما إلى ذلك. لمعرفة المزيد، راجع وثائق Query for dates.
  • مكتوب بهذه اللغة (Written in this language): حدد اللغة المحددة التي تتطابق مع المستودعات من القوائم: JavaScript، TypeScript، Rust، وما إلى ذلك، أو اللغة التي كُتب بها.

خيارات المستودع (Repository Options)

  • بهذا العدد من النجوم (With this many stars): اكتب عدد النجوم في حقل stars: لتصفية المستودعات والعثور عليها حسب عدد النجوم. يمكنك تطبيق مقارنات مثل >1000 (أكثر من 1000 نجمة) أو =1000 (1000 نجمة بالضبط) لتضييق النتائج بناءً على الشعبية.
  • بهذا العدد من التشعبات (With this many forks): اكتب عدد التشعبات لتصفية المستودعات والعثور عليها حسب عدد التشعبات. يمكنك تطبيق مقارنات مثل 100..1000 (العثور على مستودعات بها من 100 إلى 1000 تشعب)، >1000 (أكثر من 1000 تشعب)، أو =1000 (1000 تشعب بالضبط) لتضييق النتائج بناءً على الشعبية.
  • بهذا الحجم (Of this size): اكتب حجم المستودع بالكيلوبايت (KB) لتصفية المستودعات والعثور عليها، على سبيل المثال، حجم 10000 KB.
  • تم الدفع إليه (Pushed to): اكتب التاريخ لتصفية المستودعات والعثور عليها، على سبيل المثال >2013-02-01 يتطابق مع المستودعات التي تحتوي على كلمة “react” والتي تم الدفع إليها بعد يناير 2013.
  • بهذا الترخيص (With this license): حدد الترخيص لتصفية المستودعات أو العثور عليها بناءً على الترخيص، على سبيل المثال، تلك المرخصة بموجب Apache License 2.0.

خيارات الكود (Code Options)

  • بهذا الامتداد (With this extension): اكتب الامتداد، مثل rb، py، أو jpg، الذي تريد البحث عنه على GitHub.
  • في هذا المسار (In this path): اكتب المسار للتصفية على GitHub للبحث عن الملفات حسب موقعها داخل المستودع. على سبيل المثال، يمكنك العثور على ملف header.tsx تحديدًا داخل مجلد ./components من خلال الجمع بين filename: و path:.
  • بهذا الاسم للملف (With this file name): اكتب اسم الملف، مثل app، footer، أو header، الذي تريد البحث عنه على GitHub.

خيارات المشكلة (Issue Options)

  • في هذه الحالة (In the state): حدد حالة المشكلة (ما إذا كانت المشكلة مفتوحة open أو مغلقة closed)، على سبيل المثال، libraries state:open mentions:rajdeep تتطابق مع المشكلات المفتوحة التي تذكر @rajdeep بكلمة “libraries“، أو language:JavaScript state:open تتطابق مع المشكلات المفتوحة في مستودعات JavaScript.
  • بهذا العدد من التعليقات (With this many comments): أدخل رقم التعليق بناءً على عدد التعليقات. يمكنك تصفية المشكلة، على سبيل المثال، state:closed comments:>100 تتطابق مع المشكلات المغلقة التي بها أكثر من 100 تعليق، أو comments:500..1000 تتطابق مع المشكلات التي تتراوح تعليقاتها بين 500 و 1000.
  • بالتسميات (With the labels): أدخل التسمية (label) لتصفية نتائجك أو تضييقها حسب التسميات. نظرًا لأن المشكلات يمكن أن تحتوي على تسميات متعددة، يمكنك سرد وإضافة مؤهلات تسمية متعددة لكل مشكلة. على سبيل المثال، أولاً، label:bug label:resolved تتطابق مع المشكلات التي تحمل التسميتين “bug” و “resolved“. ثانيًا، label:bug,resolved تتطابق مع المشكلات التي تحمل التسمية “bug” أو التسمية “resolved“. ثالثًا، على سبيل المثال broken in:body -label:bug label:priority تتطابق مع المشكلات التي تحتوي على كلمة “broken” في النص الأساسي (body)، والتي لا تحتوي على التسمية “bug“، ولكن تحتوي على التسمية “priority“.
  • تم فتحها بواسطة المؤلف (Opened by the author): أدخل الاسم أو اسم المستخدم (username) لتصفية المشكلات أو العثور عليها التي أنشأها مستخدم أو حساب تكامل، أو تصفية المشكلات بناءً على المؤلف. على سبيل المثال، author:rajdeep تتطابق مع المشكلات التي تحتوي على كلمة “fixed” والتي أنشأها @rajdeep، أو author:octocat تتطابق مع المشكلات التي أنشأها الحساب المسمى “octocat“.
  • تذكر المستخدمين (Mentioning the users): أدخل الاسم أو اسم المستخدم للعثور على المشكلات التي تذكر المستخدم. على سبيل المثال، fixed mentions:rajdeep تتطابق مع المشكلات التي تحتوي على كلمة “fixed” والتي تذكر @rajdeep في المشكلة.
  • تم تعيينها للمستخدمين (Assigned to the users): أدخل الاسم أو اسم المستخدم للعثور على المشكلات أو تصفيتها بناءً على اسم المستخدم المحدد المعين للمشكلة. على سبيل المثال، state:open assignee:rajdeep تتطابق مع المشكلات المفتوحة المعينة لـ @rajdeep.
  • تم التحديث قبل التاريخ (Updated before the date): أدخل التاريخ، وقم بتصفية المشكلات بناءً على وقت الإنشاء، أو عندما تم تحديثها آخر مرة. على سبيل المثال language:c# created:<2011-01-01 state:open تتطابق مع المشكلات المفتوحة التي تم إنشاؤها قبل عام 2011 في المستودعات المكتوبة بلغة C# أو weird in:body updated:>=2013-02-01 تتطابق مع المشكلات التي تحتوي على كلمة “weird” في النص الأساسي (body) والتي تم تحديثها بعد فبراير 2013.

خيارات المستخدم (User Options)

  • بهذا الاسم الكامل (With this full name): أدخل اسمًا كاملاً لتصفية المستودعات التي يتضمن اسمها “rajdeep singh” على GitHub.
  • من هذا الموقع (From this location): أدخل موقعًا للعثور على المستخدمين على GitHub. على سبيل المثال، location:russia language:javascript يعيد المستخدمين المقيمين في روسيا والذين تكون مستودعاتهم مكتوبة بشكل أساسي بلغة JavaScript.
  • بهذا العدد من المتابعين (With this many followers): أدخل عدد المتابعين لتصفية المستخدمين حسب الشعبية. على سبيل المثال، followers:>=1000 يعثر على المستخدمين الذين لديهم 1000 متابع أو أكثر، بينما followers:1..10 rajdeep يعيد المستخدمين الذين لديهم من 1 إلى 10 متابعين ويتضمن اسمهم “rajdeep” على GitHub.
  • بهذا العدد من المستودعات العامة (With this many public repositories): أدخل عدد المستودعات لتصفية المستخدمين حسب عدد المستودعات العامة لديهم. على سبيل المثال، repos:>10 يعثر على المستخدمين الذين لديهم أكثر من 10 مستودعات، بينما repos:10..30 يعيد المستخدمين الذين لديهم ما بين 10 و 30 مستودعًا عامًا على GitHub.
  • يعمل بهذه اللغة (Working in this language): حدد اللغة للعثور على المستخدمين بناءً على اللغات الأساسية لمستودعاتهم. على سبيل المثال، language:javascript location:russia يعيد المستخدمين في روسيا الذين تكون مستودعاتهم مكتوبة في الغالب بلغة JavaScript، بينما language:javascript fullname:rajdeep يعثر على المستخدمين الذين لديهم مستودعات JavaScript والذين يتضمن اسمهم الكامل “rajdeep” على GitHub.

خيارات الويكي (Wiki Options)

  • تم التحديث قبل التاريخ (Updated before the date): أدخل تاريخًا لتصفية صفحات الويكي التي تحتوي على “next.js” والتي تم تحديثها آخر مرة بعد 2016-01-01 في GitHub wiki الخاص بك.

أفضل طريقة لاستخدام مؤهلات البحث المتقدم هي الجمع بين خيار بحث واحد أو أكثر من المؤهلات لتحقيق أفضل نتيجة.

كيفية حفظ عمليات البحث

إذا خصصت بعض الوقت لملء المعلومات في بحث GitHub المتقدم، يمكنك حفظ البحث لاستخدامه في المستقبل:

أدخل الاسم وانقر على زر “Create saved search“:

يمكنك عرض قائمة بجميع عمليات البحث المحفوظة لديك:

لإدارة بحث محفوظ، افتح شريط البحث واكتب “saved:” في شريط البحث، ثم انقر على زر “Manage saved searches“. لتحرير بحث محفوظ، انقر على أيقونة القلم بجانبه. لحذف بحث محفوظ، انقر على أيقونة سلة المهملات.

لماذا نحتاج إلى بحث GitHub المتقدم؟

كما ذكرنا، يساعدك بحث GitHub المتقدم في العثور على أفضل المشكلات للمساهمة فيها في المستودعات مفتوحة المصدر. على سبيل المثال، إذا كنت خبيرًا في Next.js و React.js، يمكنك استخدام بحث GitHub المتقدم لتحديد المشكلات المناسبة في المشاريع مفتوحة المصدر للمساهمة. حتى كمطور مبتدئ، يمكنك استخدام بحث GitHub المتقدم للعثور على “good first issues” التي تم تصنيفها بواسطة المشرفين (maintainers)، مما يسهل المساهمة.

الخلاصة

يُعد بحث GitHub المتقدم متعدد الاستخدامات. إنه ليس فقط للبحث، بل أيضًا للبحث عن المشكلات الحديثة، طلبات السحب (pull requests)، وطلبات الدفع (push requests) التي قد تكون مرتبطة باستعلامك، مستودعك، مستخدمك، أو أي شيء آخر. استخدامي المفضل هو العثور على فرص المساهمة في المشاريع مفتوحة المصدر باستخدام بحث GitHub المتقدم.

💡 الخلاصة التقنية

يُعد بحث GitHub المتقدم أداة لا غنى عنها للمطورين من جميع المستويات. من خلال استخدامه بفعالية، يمكنك تجاوز البحث السطحي للعثور على الأكواد الدقيقة، المشكلات الحرجة، والمساهمات المناسبة التي تتوافق مع مهاراتك واهتماماتك. سواء كنت تسعى لتحسين مشروعك الخاص، أو استكشاف قواعد أكواد جديدة، أو الانخراط في مجتمع المصادر المفتوحة، فإن إتقان مؤهلات البحث المتقدمة سيفتح لك آفاقًا واسعة ويعزز من إنتاجيتك بشكل كبير.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *