मैं GitHub पर एक प्रतिबद्ध संदेश कैसे खोज सकता हूं?


328

Git रिपॉजिटरी में नहीं , बल्कि विशेष रूप से GitHub में - मैं किसी विशिष्ट रिपॉजिटरी / ब्रांच के सिर्फ कमिटेड मैसेज कैसे खोजूं ?


3
क्या रेपो सार्वजनिक या निजी है?

2
सभी कांटे में एक प्रतिबद्ध संदेशों की खोज कैसे करें? पहिया को फिर से आविष्कार करने से बचने की कोशिश कर रहा है जब मुख्य भंडार में 100+ से अधिक कांटे हैं!
डैनियल सोकोलोस्की

तब से कोई बदलाव?
पावेल Paमिरदा

मैं
कमिट

जवाबों:


68

2017 तक यह GitHub में ही शामिल कार्यक्षमता है

उनके द्वारा प्रयुक्त उदाहरण खोज है repo:torvalds/linux merge:false crypto policy

यहां छवि विवरण दर्ज करें Https://github.com/blog/2299-search-commit-messages से GIF छवि


जब मैं पढ़ने / लिखने के लिए एक निजी रेपो खोजता हूं तो मुझे एक अनुमति त्रुटि मिलती है।
अनोन 58192932

1
मैं पाँच मिनट के लिए देख रहा हूँ और मैं यह पता नहीं लगा सकता कि चूहे के नीचे और दाईं ओर जाने के बाद माउस कहाँ जाता है।
केविन क्रुमविद जुले

1
@KevinKrumwiede शायद "बंद रिकॉर्डिंग" बटन haha
कोरी कोल

मैंने हार मान ली और "git log --all --grep = searhterm" का उपयोग कर लिया
एडविन इवांस

206

आप ऐसा करने में सक्षम थे, लेकिन 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.

143
उन्होंने इसे क्यों हटाया? यह वास्तव में मददगार फीचर है।
जोश ब्राउन

1
कारक रहस्यवादी: I.want.spaces.in.this.string आमतौर पर पर्याप्त है।
dbrower

11
टिप -gअधिकांश सामान्य उपयोग मामलों के लिए ध्वज को छोड़ देती है । मैंने इसमें बहुत अधिक नहीं देखा है, लेकिन इसके साथ ही -g, खोज केवल एक महीने में वापस जाती है। एक रेपो git log -g --grep=fixकी developशाखा में, जिसमें ~ 8000 दो साल में फैले हैं, केवल 2 फरवरी तक वापस आ
जाएंगे

1
@DanDascalescu स्ट्रेंज, मैं -gध्वज के साथ कम से कम 5 महीने पहले वापस आने में सक्षम था ।
क्रिसपी

134

अपडेट (2017/01/05):

GitHub ने एक अपडेट प्रकाशित किया है जो अब आपको उनके UI के भीतर प्रतिबद्ध संदेशों की खोज करने की अनुमति देता है। अधिक जानकारी के लिए ब्लॉग पोस्ट देखें ।


मेरा एक ही सवाल था और कल किसी GitHub से संपर्क किया:

चूंकि उन्होंने अपने खोज इंजन को एलिटिक्सखोज में बदल दिया था, इसलिए GitHub UI का उपयोग करके प्रतिबद्ध संदेशों की खोज करना संभव नहीं है। लेकिन यह सुविधा टीम की इच्छा सूची पर है।

दुर्भाग्य से अभी उस समारोह की कोई रिलीज़ डेट नहीं है।


7
+1 आप ने मुझे GitHub में यह बताकर फालतू समय बचाया है कि मैं यह कैसे हासिल कर सकता हूं कि जो मैं चाहता हूं वह कार्यक्षमता का एक स्पष्ट टुकड़ा होगा। इसलिए अब हमें इसके बजाय कमांड लाइन के माध्यम से स्थानीय स्तर पर रेपो को क्लोन करना है। बेनाम: भगवान, यह प्रगति एह है ?! ;)
मैकनाब

68
यहां तक ​​कि वेब यूआई में उनकी उन्नत खोज सबसे महत्वपूर्ण क्षेत्र - वास्तविक प्रतिबद्ध संदेश पर खोज करने की अनुमति नहीं देती है। यह बिल्कुल हास्यास्पद है IMO। गितुब अपने अभिनय को एक साथ प्राप्त करें!
ब्रैड थॉमस

22
हाँ। इस तथ्य को भूल जाओ कि उन्होंने एक वेब सेवा का निर्माण किया है जो खुले स्रोत सॉफ्टवेयर में क्रांति लाने और लोकप्रिय बनाने में मदद करता है, तथ्य यह है कि उनके पास यह एक विशेषता नहीं है जो इसे पूरी तरह से दिखावा बनाता है!
जॉन केयर्न्स

12
आसानी से खोजने योग्य सार्वजनिक स्थान पर GitHub के साथ अपने प्रवचन की सामग्री प्रकाशित करने के लिए समय निकालने के लिए धन्यवाद। यह बेतुका है कि जनता के लिए इस तरह की जानकारी प्राप्त करने का एकमात्र तरीका है - यह गीथहब के लिए एक सार्वजनिक मुद्दा ट्रैकर नहीं है - लेकिन इस तरह की मूर्खता की उपस्थिति में, आपने यहां क्या किया है, सैकड़ों लोगों को रोकने का एक उपयोगी तरीका है दूसरों को एक ही अनुरोध में समय बर्बाद करने से। आपके द्वारा सेव किए गए उत्पादकता के सैकड़ों घंटे के लिए धन्यवाद।
मार्क एमी

1
एटलसियन पब्लिक ट्रैकर की तुलना में बेहतर नहीं है, जो 1000 के उत्थान के साथ 7 साल पुराने खुले मुद्दों से भरा है ...
Askdesigners

58

संक्षिप्त उत्तर है, आप वेबसाइट github.com पर सीधे प्रतिबद्ध संदेश नहीं खोज सकते। समय के लिए हम स्थानीय सलाह देते हैंgit grep इस धागे पर अन्य लोगों ने प्रस्ताव दिया है।

एक समय में GitHub ने git grepएक एकल रिपॉजिटरी के लिए प्रतिबद्ध संदेशों पर एक शैली खोज की पेशकश की थी । दुर्भाग्य से, इस दृष्टिकोण ने सेवा के एक इनकार को उजागर किया जो एक फ़ाइल सर्वर को दुर्गम को प्रस्तुत कर सकता था। इस कारण हमने हटा दियाgit grep खोज को ।

वर्तमान बैक-ऑफ-द-लिफाफा अनुमान 80 बिलियन अंक के आसपास गीथहब में कमिट्स की संख्या डालता है। हालाँकि Google इंजीनियर हमारी पीठ पीछे हँसते हैं, यह ElasticSearch में संग्रहीत करने के लिए दस्तावेजों की एक बड़ी संख्या है। हम इस डेटासेट को खोज योग्य बनाना पसंद करेंगे, लेकिन यह एक तुच्छ परियोजना नहीं है।


2
+1। यह पुष्टि करने के लिए कि मैंने क्या सोचा था कि मैं अपना उत्तर लिख रहा हूं : प्रतिबद्ध संदेश अनुक्रमित नहीं हैं: आप अनुक्रमण के साथ काम कर रहे हैं git diff's(मतलब कमिट की सामग्री, प्रतिबद्ध मेटाडेटा नहीं)
VonC

कैसे के बारे में सिर्फ "कूद करने के लिए प्रतिबद्ध" बटन? वर्तमान में यह URL से उपलब्ध है - stackoverflow.com/a/12214817/817632 लेकिन इसके लिए कोई इंटरफ़ेस नहीं है (ऐसा नहीं है कि मुझे पता है)। केस का उपयोग करें - संस्करण के बजाय bower.json में कहीं न कहीं एक कमिट हैश पाएं और यह देखना चाहते हैं कि यह प्रतिबद्ध वास्तव में क्या करता है। यह कुछ समय की बचत को बचा लेगा।
ओल्गा

44

इसे गिटहब से हटा दिया गया था। मैं उपयोग करता हूं:

$git log --all --oneline | grep "search query"

यहां छवि विवरण दर्ज करें

आप लेखक द्वारा फ़िल्टर भी कर सकते हैं:

$git log --all --oneline --author=rickhanlonii | grep "search query"

3
इसने मेरे लिए काम किया, लेकिन सबसे ज्यादा जवाब नहीं दिया।
मक्कड़

21

खोज कोड पर सहायता पृष्ठ से , ऐसा लगता है कि यह अभी तक संभव नहीं है।

आप अपने रिपॉजिटरी में पाठ की खोज कर सकते हैं, जिसमें खोजने के लिए फ़ाइलों या रास्तों को चुनने की क्षमता भी शामिल है, लेकिन आप यह निर्दिष्ट नहीं कर सकते कि आप कमिट में खोजना चाहते हैं।

शायद यह उन्हें सुझाव है ?


18
ऐसा तब लगता है जब रेपो के माध्यम से खोज करने के लिए अधिक "डिफ़ॉल्ट" केस का उपयोग होता है। विशेष रूप से किसी को टन के साथ एक नया भंडार जानने के लिए। उन्हें निश्चित रूप से इसे जोड़ने पर विचार करना चाहिए।
जोस ब्राउन ने

19

आप इसे रिपॉजिटरी के साथ कर सकते हैं जो Google द्वारा क्रॉल किया गया है (परिणाम रिपॉजिटरी से रिपॉजिटरी में भिन्न होते हैं)।

"परिवर्तन लाइसेंस" के लिए सभी क्रॉल किए गए रिपॉजिटरी की सभी शाखाओं को खोजें

"परिवर्तन लाइसेंस" साइट: https://github.com/*/*/commits

"परिवर्तन लाइसेंस" के लिए सभी क्रॉल किए गए रिपॉजिटरी की मास्टर शाखा खोजें:

"परिवर्तन लाइसेंस" साइट: https://github.com/*/*/commits/master

"परिवर्तन लाइसेंस" के लिए सभी क्रॉल किए गए ट्विटर रिपॉजिटरी की मास्टर शाखा खोजें

"परिवर्तन लाइसेंस" साइट: https://github.com/twitter/*/commits/master

"परिवर्तन लाइसेंस" के लिए ट्विटर / some_project रिपॉजिटरी की सभी शाखाओं को खोजें

"परिवर्तन लाइसेंस" साइट: https://github.com/twitter/some_project/commits


4
@DZenBot अगर यह सार्वजनिक रेपो नहीं है, तो आप पहले से ही grep gitp के लिए एक स्थानीय प्रतिलिपि होने की संभावना रखते हैं, मैंने सिर्फ उन लोगों के लिए यह उत्तर दिया है जो कुछ बदलाव किए जाने पर यह पता लगाने के लिए पूरे सार्वजनिक रेपो का क्लोन नहीं बनाना चाहते हैं। मैं इसका इस्तेमाल ज्यादातर उन पुराने कॉमिक्स को खोजने के लिए करता हूं जो पुराने gtk वर्जन के लिए सपोर्ट को हटा देते हैं या जब लाइसेंस gpl3 में बदल जाते हैं
technosaurus

15

अपडेट जनवरी 2017 (दो साल बाद):

अब आप प्रतिबद्ध संदेशों की खोज कर सकते हैं ! (अभी भी केवल मास्टर शाखा में)

https://cloud.githubusercontent.com/assets/1387653/21622772/61a5c7a6-d1bc-11e6-809d-134936a4ac05.gif


फरवरी 2015: यकीन नहीं हो सकता है कि कभी भी संभव हो सकता है, एलिटिक्स खोज पर मौजूदा खोज बुनियादी ढांचे के आधार पर विचार ( जनवरी 2013 में पेश किया गया ) पर विचार कर रहा है।

एक उत्तर के रूप में "विश्वसनीय और / या आधिकारिक स्रोतों से आरेखण", यहाँ गीथहब (अगस्त 2013) में एलिटिक्स की खोज के आरोप में गीथहब लोगों के साथ एक साक्षात्कार किया गया है।

टिम Pease : हमारे पास दो दस्तावेज़ प्रकार हैं: एक एक स्रोत कोड फ़ाइल है और दूसरा एक भंडार है। जिस तरह से गिट काम करता है वह आपके पास है और आपके पास प्रत्येक कमिट के लिए एक शाखा है। रिपॉजिटरी दस्तावेज उस विशेष रिपॉजिटरी के लिए सबसे हालिया प्रतिबद्ध का ट्रैक रखते हैं जिसे अनुक्रमित किया गया है। जब कोई उपयोगकर्ता गितुब तक एक नई कमेटी को आगे बढ़ाता है, तो हम उस रिपॉजिटरी डॉक्यूमेंट को इलास्टिक्स खोज से खींचते हैं। फिर हम सबसे हाल ही में अनुक्रमित प्रतिबद्ध देखते हैं और फिर हमें उन सभी फ़ाइलों की एक सूची मिलती है जिन्हें संशोधित किया गया था, या जोड़ा गया था, या इस हाल के धक्का के बीच हटा दिया गया था और जो हमने पहले अनुक्रमित किया था। फिर हम आगे बढ़ सकते हैं और बस उन दस्तावेजों को अपडेट कर सकते हैं जिन्हें बदल दिया गया है। हर बार जब कोई धक्का देता है तो हमें पूरे सोर्स कोड ट्री को फिर से इंडेक्स नहीं करना पड़ता है।

एंड्रयू Cholakian: तो, तुम लोग केवल सूचकांक, मैं मान रहा हूँ, मास्टर शाखा।

टिम पीज: सही। यह केवल उस मुख्य शाखा का प्रमुख है जिसे आप वहां ले जा रहे हैं और अभी भी बहुत सारा डेटा, दो बिलियन दस्तावेज, 30 टेराबाइट्स हैं।

एंड्रयू Cholakian: यह बहुत बड़ा है।

[...]

टिम पीज: पुश पर इंडेक्सिंग सोर्स कोड के साथ, यह एक सेल्फ हीलिंग प्रक्रिया है।
हमारे पास वह रिपॉजिटरी डॉक्यूमेंट है जो अंतिम अनुक्रमित कमिटमेंट का ट्रैक रखता है। यदि हम चूक गए हैं, तो बस तीन कमिट करने से चूक जाते हैं, जहां वे काम विफल हो जाते हैं, अगली कमिट जो आती है, हम अभी भी पिछले कमिट के बीच के अंतर को देख रहे हैं जिसे हमने अनुक्रमित किया है और एक जिसे हम इस नए पुश के साथ देख रहे हैं।
आप एक करते हैं git diffऔर आपको वे सभी फाइलें मिलती हैं जिन्हें अपडेट किया गया है, हटाया गया है, या जोड़ा गया है। आप बस कह सकते हैं, “ठीक है, हमें इन फ़ाइलों को हटाने की आवश्यकता है। हमें इन फ़ाइलों और सभी चीजों को जोड़ना होगा। ” यह आत्म-चिकित्सा है और यही वह दृष्टिकोण है जिसे हमने बहुत अधिक वास्तुकला के साथ लिया है।

हर तरह नहीं है कि सभी की शाखाओं सभी रेपो कि दृष्टिकोण के साथ अनुक्रमित किया जाएगा।
एक वैश्विक प्रतिबद्ध संदेश खोज अभी के लिए उपलब्ध नहीं है।
और टिम पीज़ स्वयं पुष्टि करते हैं कि संदेशों को अनुक्रमित नहीं किया गया है

ध्यान दें कि यह असंभव एक के अपने elasticsearch एक स्थानीय क्लोन के स्थानीय अनुक्रमण प्राप्त करने के लिए नहीं है: देखें " ElasticSearch के साथ एक Git भंडार सर्च कर रहे हैं "

लेकिन एक विशिष्ट रेपो के लिए, इसका क्लोन बनाना और करना सबसे आसान रहता है:

git log --all --grep='my search'

(" मैसेज द्वारा Git रिपॉजिटरी कैसे खोजें? " पर अधिक विकल्प )


7

चूंकि इसे GitHub से हटा दिया गया है, मैं gitkऐसा करने के लिए लिनक्स पर उपयोग कर रहा हूं ।

टर्मिनल से अपने रिपॉजिटरी में जाएं और टाइप करें gitk

GUI के बीच में, एक खोज बॉक्स है। यह फिल्टर का एक अच्छा चयन प्रदान करता है:

खोज पट्टी

स्कोप - युक्त, स्पर्श पथ, जोड़ने / हटाने स्ट्रिंग, बदलते लाइन मिलान

मैच का प्रकार - सटीक / इग्नेसकेस / रेग्जैक्स

खोज फ़ील्ड - सभी फ़ील्ड / शीर्षक / टिप्पणियाँ / कमेंट



4

यदि आपके पास रिपॉजिटरी का एक स्थानीय संस्करण है, तो आप इस कच्चे शेल स्क्रिप्ट को आज़माना चाह सकते हैं जो मैंने आपके डिफ़ॉल्ट ब्राउज़र में नए टैब में आपके खोज शब्द से मेल खाते सभी हिट के लिए 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 पृष्ठ आपके ब्राउज़र में खोले जाएंगे। (चेतावनी दें कि यदि आपका खोज शब्द सैकड़ों कमिट में दिखाई देता है, तो यह आपके ब्राउज़र को अच्छी तरह से क्रैश कर सकता है और थोड़ी देर के लिए आपके पीसी के सीपीयू को खा सकता है।)


0

2019 के मध्य तक, आप बाईं ओर के शीर्ष खोज बॉक्स में जो भी खोजना चाहते हैं उसे टाइप करें और फिर "कमिट" पर क्लिक करें।

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.