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