Git रिपॉजिटरी में नहीं , बल्कि विशेष रूप से GitHub में - मैं किसी विशिष्ट रिपॉजिटरी / ब्रांच के सिर्फ कमिटेड मैसेज कैसे खोजूं ?
Git रिपॉजिटरी में नहीं , बल्कि विशेष रूप से GitHub में - मैं किसी विशिष्ट रिपॉजिटरी / ब्रांच के सिर्फ कमिटेड मैसेज कैसे खोजूं ?
जवाबों:
2017 तक यह GitHub में ही शामिल कार्यक्षमता है ।
उनके द्वारा प्रयुक्त उदाहरण खोज है repo:torvalds/linux merge:false crypto policy
Https://github.com/blog/2299-search-commit-messages से GIF छवि
आप ऐसा करने में सक्षम थे, लेकिन GitHub ने 2013 के मध्य में इस सुविधा को हटा दिया। स्थानीय स्तर पर इसे प्राप्त करने के लिए, आप यह कर सकते हैं:
git log -g --grep=STRING
( -g
यदि आप अन्य शाखाओं की खोज करना चाहते हैं और झूलते हुए झंडे का उपयोग करें ।)
-g, --walk-reflogs
Instead of walking the commit ancestry chain, walk reflog entries from
the most recent one to older ones.
-g
अधिकांश सामान्य उपयोग मामलों के लिए ध्वज को छोड़ देती है । मैंने इसमें बहुत अधिक नहीं देखा है, लेकिन इसके साथ ही -g
, खोज केवल एक महीने में वापस जाती है। एक रेपो git log -g --grep=fix
की develop
शाखा में, जिसमें ~ 8000 दो साल में फैले हैं, केवल 2 फरवरी तक वापस आ
-g
ध्वज के साथ कम से कम 5 महीने पहले वापस आने में सक्षम था ।
अपडेट (2017/01/05):
GitHub ने एक अपडेट प्रकाशित किया है जो अब आपको उनके UI के भीतर प्रतिबद्ध संदेशों की खोज करने की अनुमति देता है। अधिक जानकारी के लिए ब्लॉग पोस्ट देखें ।
मेरा एक ही सवाल था और कल किसी GitHub से संपर्क किया:
चूंकि उन्होंने अपने खोज इंजन को एलिटिक्सखोज में बदल दिया था, इसलिए GitHub UI का उपयोग करके प्रतिबद्ध संदेशों की खोज करना संभव नहीं है। लेकिन यह सुविधा टीम की इच्छा सूची पर है।
दुर्भाग्य से अभी उस समारोह की कोई रिलीज़ डेट नहीं है।
संक्षिप्त उत्तर है, आप वेबसाइट github.com पर सीधे प्रतिबद्ध संदेश नहीं खोज सकते। समय के लिए हम स्थानीय सलाह देते हैंgit grep
इस धागे पर अन्य लोगों ने प्रस्ताव दिया है।
एक समय में GitHub ने git grep
एक एकल रिपॉजिटरी के लिए प्रतिबद्ध संदेशों पर एक शैली खोज की पेशकश की थी । दुर्भाग्य से, इस दृष्टिकोण ने सेवा के एक इनकार को उजागर किया जो एक फ़ाइल सर्वर को दुर्गम को प्रस्तुत कर सकता था। इस कारण हमने हटा दियाgit grep
खोज को ।
वर्तमान बैक-ऑफ-द-लिफाफा अनुमान 80 बिलियन अंक के आसपास गीथहब में कमिट्स की संख्या डालता है। हालाँकि Google इंजीनियर हमारी पीठ पीछे हँसते हैं, यह ElasticSearch में संग्रहीत करने के लिए दस्तावेजों की एक बड़ी संख्या है। हम इस डेटासेट को खोज योग्य बनाना पसंद करेंगे, लेकिन यह एक तुच्छ परियोजना नहीं है।
git diff's
(मतलब कमिट की सामग्री, प्रतिबद्ध मेटाडेटा नहीं)
इसे गिटहब से हटा दिया गया था। मैं उपयोग करता हूं:
$git log --all --oneline | grep "search query"
आप लेखक द्वारा फ़िल्टर भी कर सकते हैं:
$git log --all --oneline --author=rickhanlonii | grep "search query"
खोज कोड पर सहायता पृष्ठ से , ऐसा लगता है कि यह अभी तक संभव नहीं है।
आप अपने रिपॉजिटरी में पाठ की खोज कर सकते हैं, जिसमें खोजने के लिए फ़ाइलों या रास्तों को चुनने की क्षमता भी शामिल है, लेकिन आप यह निर्दिष्ट नहीं कर सकते कि आप कमिट में खोजना चाहते हैं।
शायद यह उन्हें सुझाव है ?
आप इसे रिपॉजिटरी के साथ कर सकते हैं जो Google द्वारा क्रॉल किया गया है (परिणाम रिपॉजिटरी से रिपॉजिटरी में भिन्न होते हैं)।
"परिवर्तन लाइसेंस" साइट: https://github.com/*/*/commits
"परिवर्तन लाइसेंस" साइट: https://github.com/*/*/commits/master
"परिवर्तन लाइसेंस" साइट: https://github.com/twitter/*/commits/master
"परिवर्तन लाइसेंस" साइट: https://github.com/twitter/some_project/commits
अपडेट जनवरी 2017 (दो साल बाद):
अब आप प्रतिबद्ध संदेशों की खोज कर सकते हैं ! (अभी भी केवल मास्टर शाखा में)
फरवरी 2015: यकीन नहीं हो सकता है कि कभी भी संभव हो सकता है, एलिटिक्स खोज पर मौजूदा खोज बुनियादी ढांचे के आधार पर विचार ( जनवरी 2013 में पेश किया गया ) पर विचार कर रहा है।
एक उत्तर के रूप में "विश्वसनीय और / या आधिकारिक स्रोतों से आरेखण", यहाँ गीथहब (अगस्त 2013) में एलिटिक्स की खोज के आरोप में गीथहब लोगों के साथ एक साक्षात्कार किया गया है।
टिम Pease : हमारे पास दो दस्तावेज़ प्रकार हैं: एक एक स्रोत कोड फ़ाइल है और दूसरा एक भंडार है। जिस तरह से गिट काम करता है वह आपके पास है और आपके पास प्रत्येक कमिट के लिए एक शाखा है। रिपॉजिटरी दस्तावेज उस विशेष रिपॉजिटरी के लिए सबसे हालिया प्रतिबद्ध का ट्रैक रखते हैं जिसे अनुक्रमित किया गया है। जब कोई उपयोगकर्ता गितुब तक एक नई कमेटी को आगे बढ़ाता है, तो हम उस रिपॉजिटरी डॉक्यूमेंट को इलास्टिक्स खोज से खींचते हैं। फिर हम सबसे हाल ही में अनुक्रमित प्रतिबद्ध देखते हैं और फिर हमें उन सभी फ़ाइलों की एक सूची मिलती है जिन्हें संशोधित किया गया था, या जोड़ा गया था, या इस हाल के धक्का के बीच हटा दिया गया था और जो हमने पहले अनुक्रमित किया था। फिर हम आगे बढ़ सकते हैं और बस उन दस्तावेजों को अपडेट कर सकते हैं जिन्हें बदल दिया गया है। हर बार जब कोई धक्का देता है तो हमें पूरे सोर्स कोड ट्री को फिर से इंडेक्स नहीं करना पड़ता है।
एंड्रयू Cholakian: तो, तुम लोग केवल सूचकांक, मैं मान रहा हूँ, मास्टर शाखा।
टिम पीज: सही। यह केवल उस मुख्य शाखा का प्रमुख है जिसे आप वहां ले जा रहे हैं और अभी भी बहुत सारा डेटा, दो बिलियन दस्तावेज, 30 टेराबाइट्स हैं।
एंड्रयू Cholakian: यह बहुत बड़ा है।
[...]
टिम पीज: पुश पर इंडेक्सिंग सोर्स कोड के साथ, यह एक सेल्फ हीलिंग प्रक्रिया है।
हमारे पास वह रिपॉजिटरी डॉक्यूमेंट है जो अंतिम अनुक्रमित कमिटमेंट का ट्रैक रखता है। यदि हम चूक गए हैं, तो बस तीन कमिट करने से चूक जाते हैं, जहां वे काम विफल हो जाते हैं, अगली कमिट जो आती है, हम अभी भी पिछले कमिट के बीच के अंतर को देख रहे हैं जिसे हमने अनुक्रमित किया है और एक जिसे हम इस नए पुश के साथ देख रहे हैं।
आप एक करते हैंgit diff
और आपको वे सभी फाइलें मिलती हैं जिन्हें अपडेट किया गया है, हटाया गया है, या जोड़ा गया है। आप बस कह सकते हैं, “ठीक है, हमें इन फ़ाइलों को हटाने की आवश्यकता है। हमें इन फ़ाइलों और सभी चीजों को जोड़ना होगा। ” यह आत्म-चिकित्सा है और यही वह दृष्टिकोण है जिसे हमने बहुत अधिक वास्तुकला के साथ लिया है।
हर तरह नहीं है कि सभी की शाखाओं सभी रेपो कि दृष्टिकोण के साथ अनुक्रमित किया जाएगा।
एक वैश्विक प्रतिबद्ध संदेश खोज अभी के लिए उपलब्ध नहीं है।
और टिम पीज़ स्वयं पुष्टि करते हैं कि संदेशों को अनुक्रमित नहीं किया गया है ।
ध्यान दें कि यह असंभव एक के अपने elasticsearch एक स्थानीय क्लोन के स्थानीय अनुक्रमण प्राप्त करने के लिए नहीं है: देखें " ElasticSearch के साथ एक Git भंडार सर्च कर रहे हैं "
लेकिन एक विशिष्ट रेपो के लिए, इसका क्लोन बनाना और करना सबसे आसान रहता है:
git log --all --grep='my search'
(" मैसेज द्वारा Git रिपॉजिटरी कैसे खोजें? " पर अधिक विकल्प )
चूंकि इसे GitHub से हटा दिया गया है, मैं gitk
ऐसा करने के लिए लिनक्स पर उपयोग कर रहा हूं ।
टर्मिनल से अपने रिपॉजिटरी में जाएं और टाइप करें gitk
।
GUI के बीच में, एक खोज बॉक्स है। यह फिल्टर का एक अच्छा चयन प्रदान करता है:
स्कोप - युक्त, स्पर्श पथ, जोड़ने / हटाने स्ट्रिंग, बदलते लाइन मिलान
मैच का प्रकार - सटीक / इग्नेसकेस / रेग्जैक्स
खोज फ़ील्ड - सभी फ़ील्ड / शीर्षक / टिप्पणियाँ / कमेंट
यह ग्रहण के भीतर से अच्छी तरह से काम करता है , जब तक कि GitHub सुविधा नहीं जोड़ता है:
यदि आपके पास रिपॉजिटरी का एक स्थानीय संस्करण है, तो आप इस कच्चे शेल स्क्रिप्ट को आज़माना चाह सकते हैं जो मैंने आपके डिफ़ॉल्ट ब्राउज़र में नए टैब में आपके खोज शब्द से मेल खाते सभी हिट के लिए GitHub पेज खोलने के लिए लिखा था:
#!/bin/sh
for sha1 in $(git rev-list HEAD -i --grep="$1"); do
python -mwebbrowser https://github.com/RepoOwnerUserName/RepoName/commit/$sha1 >/dev/null 2>/dev/null
done
बस https://github.com/RepoOwnerUserName/RepoName/
अपनी रिपॉजिटरी के वास्तविक GitHub URL से बदलें , स्क्रिप्ट को कहीं और सहेजें (जैसे कि githubsearch.sh
, इसे निष्पादन योग्य बनाएं chmod +x githubsearch.sh
) ( और फिर अपनी ~/.bashrc
फ़ाइल में निम्न उपनाम जोड़ें :
alias githubsearch='/path/to/githubsearch.sh'
फिर, आपके Git भंडार में कहीं से भी, बस टर्मिनल पर ऐसा करें:
githubsearch "what you want to search for"
और जो आपके (केस असंवेदनशील) खोज शब्द से मेल खाते हैं, उनके संबंधित GitHub पृष्ठ आपके ब्राउज़र में खोले जाएंगे। (चेतावनी दें कि यदि आपका खोज शब्द सैकड़ों कमिट में दिखाई देता है, तो यह आपके ब्राउज़र को अच्छी तरह से क्रैश कर सकता है और थोड़ी देर के लिए आपके पीसी के सीपीयू को खा सकता है।)