git वर्णन "घातक: कोई नाम नहीं मिला, कुछ भी वर्णन नहीं कर सकता" के साथ विफल रहता है।


82

मैं उबंटू 10.10 amd64 पर git 1.7.1 का उपयोग कर रहा हूं, और मैं अपने रिपॉजिटरी HEAD के हैश को एक स्वचालित संस्करण जानकारी में उपयोग करने का प्रयास कर रहा हूं जिसे मैं अपने प्रोजेक्ट में संकलित करता हूं।

अतीत में, यह हमेशा उपयोग करके काम करता था

git describe --tags

हालाँकि, अब फेंक रहा है

fatal: No names found, cannot describe anything.

मुझ पर। क्या किसी को इसका कोई मतलब है कि इसका क्या मतलब है?

Google ने केवल कुछ हिट और कोई समाधान नहीं दिखाया।


क्या आप वास्तव में केवल हैश चाहते हैं, या आपके द्वारा उपयोगी वर्णन के लिए एक साथ रखी गई जानकारी है? सबसे हाल का टैग, और मध्यवर्ती की संख्या, SHA1 की तुलना में बहुत अधिक मानव-पठनीय है। @ कान: आप अपने उत्तर को हटाना चाहते हैं, क्योंकि यह वही हो सकता है जो ओपी को चाहिए - यह बताना मुश्किल है।
कैसबेल

व्यक्तिगत अनुस्मारक: जांचें कि दूरस्थ में वास्तव में उदाहरण के लिए टैग हैंgit ls-remote --tags । मेरे मामले में रेपो को हाल ही में एक नए सर्वर में स्थानांतरित कर दिया गया है और टैग अभी तक स्थानांतरित नहीं किए गए हैं!
गेब्रियल डेविलर्स

जवाबों:


71

यदि आप अपनी आईडी चाहते हैं HEADतो आपको इसकी आवश्यकता नहीं है describe, आपको इसका उपयोग करना चाहिए rev-parse

git rev-parse HEAD

यदि आप एक संक्षिप्त हैश का उपयोग करना चाहते हैं --short

git rev-parse --short HEAD

यदि आप एक संक्षिप्त विवरण हैश में वापस आने के लिए "वर्णन" चाहते हैं, यदि उसे कोई उपयुक्त टैग नहीं मिल रहा है, तो आप उपयोग कर सकते हैं --always

git describe --always

हाँ, वह हैश लौटाता है, लेकिन मैं जो चाहता हूं वह संक्षिप्त रूप से किया गया हैश है जिसे आम तौर पर git-description द्वारा लौटाया जाता है जिसमें 8 अक्षर या तो होते हैं
फिलिप्पुस

1
@ फिलिप: git describeसामान्य रूप से टैग नाम पर आधारित एक टैग ऑब्जेक्ट आधारित स्ट्रिंग, कई हिट्स और हैश पर आधारित एक प्रत्यय देता है। यह सामान्य रूप से संक्षिप्त हैश नहीं लौटाता है इसलिए मुझे यकीन नहीं है कि आपका क्या पूछना है।
सीबी बेली

37

ऐसा लगता है कि आप git-describeउस टैग के बाद से सबसे हाल के टैग और कमिट की संख्या को शामिल करने की उम्मीद कर रहे हैं । हालाँकि, fatal: No names foundसंदेश का अर्थ है कि आपके भंडार में कोई टैग नहीं है । आपको git describeनवीनतम टैग बताने के लिए प्रतिबद्ध इतिहास में कम से कम एक टैग होना आवश्यक है।

बस अनुमान लगा रहा है, लेकिन शायद आपने कहीं और एक टैग लगाया है, लेकिन टैग को कभी भी ऊपर की ओर नहीं धकेला (हो सकता है कि आपने प्रतिबद्ध को ऊपर की ओर धकेल दिया हो, बाद में इसे टैग किया हो, और पुन: सबमिट नहीं किया था?) अब आपके अपस्ट्रीम का एक नया क्लोन आपको यह त्रुटि दे रहा है (क्योंकि इसमें कोई टैग नहीं है)। यदि ऐसा है, तो आप git push --tagsउस रिपॉजिटरी से कोशिश कर सकते हैं जिसमें वह टैग है जो आप चाहते हैं (जहां git describeआप उम्मीद कर रहे हैं)। फिर git pullउस रिपॉजिटरी पर करें जिसमें टैग नहीं है।


37

मुझे एक CI बिल्ड वातावरण में यह समस्या हुई है जहां CI टूल रिपॉजिटरी के उथले क्लोन का प्रदर्शन कर रहा था। यह निराशाजनक था, क्योंकि मेरे विकास के माहौल में, कमान

git describe --tags

मुझे उत्पादन की तरह देना होगा

2.2.12-7-g8ec9d6c9

बिल्ड वातावरण में रहते हुए मुझे "घातक कोई नाम नहीं मिला" त्रुटि मिलेगी। अगर मैंने --always टैग का उपयोग करने की कोशिश की

git describe --tags --always

तब मुझे बस नवीनतम प्रतिबद्ध का हैश मिलेगा, लेकिन उस प्रतिबद्ध से पहले का हालिया टैग नहीं

8ec9d6c9

git pullबिल्ड वातावरण में प्रदर्शन करने से मदद नहीं मिलेगी, क्योंकि एक बार जब रेपो को उथले कर दिया जाता है, तो भविष्य के पुल टैग को अपडेट नहीं करेंगे।

समाधान सुनिश्चित करना है कि निर्माण के माहौल में रेपो की प्रारंभिक क्लोन एक उथले क्लोन (यानी नहीं था git cloneआदेश के साथ उपयोग नहीं किया गया --depth, --shallow-sinceया --shallow-excludeपैरामीटर)।


मेरे पास एक ही मुद्दा था, आपकी जानकारी के लिए धन्यवाद!
टेरेनोथ

5
git fetch --depth=500ट्रैविस-सीआई के साथ मेरे लिए काम करना जोड़ना ।
मैट विल्की

यही जवाब मुझे भी चाहिए था!
सर्केफ

हां - .travis.ymlयह मेरे लिए इसे तय करने के लिए जोड़ :git: depth: false
शकर

1
आप बस git fetch --tagsउथले क्लोन में भी कर सकते हैं , लापता टैग लाने के लिए
ल्यूक एच

17

यदि आपके रिपॉजिटरी में कोई टैग नहीं है तो ऐसा होता है। भंडार तो करता है टैग नहीं है, तो आप एक उथले क्लोन में हैं (इस TravisCI या GitHub क्रिया की तरह सीआई सिस्टम में डिफ़ॉल्ट है)।

उथले क्लोन के भीतर से इतिहास (टैग सहित) चलाने के लिए, दौड़ें

git fetch --prune --unshallow

उदाहरण के लिए, GitHub कार्यों के मामले में:

- uses: actions/checkout@v2
- run: git fetch --prune --unshallow

बाद में, git describeफिर से काम करना चाहिए।


2
GitHub Actions के लिए, --tagsमेरे मामले में - की जरूरत थी git fetch --prune --unshallow --tagsइस अंक को
u-phoria

1
हालांकि यह काम करेगा और गितुब वर्कफ़्लोज़ पर उथले रिपो के लिए समस्या हल करता है, - क्या वास्तव में रिपॉजिटरी के पूरे इतिहास को लाने के लिए नहीं जाना चाहिए? बहुत सारे इतिहास के साथ एक बड़ा रेपो सीआई पाइप लाइन में एक अड़चन जोड़कर समस्याओं का कारण होगा।
नॉर्मन पेलेट

1
हां, इससे पूरा इतिहास सामने आ जाएगा। चूँकि एक टैग एक संशोधन करने के लिए एक संकेतक है, उस संशोधन को टैग को ठीक से कार्य करने के लिए मौजूद होना चाहिए।
दानिलो बार्गेन

5

सीआई काम पर काम करते समय मेरे पास समान मुद्दा था, यह मुद्दा git क्लोन था या चेकआउट scm का उपयोग किया गया था जिसमें रेपो को क्लोनिंग करते समय टैग नहीं मिला था।

टैग्स के बिना प्राप्त करना https: // github से अपस्ट्रीम परिवर्तन लाना । **********

आप "उन्नत क्लोन व्यवहार" का चयन करके और फिर टैग टैग पर क्लिक करके प्राप्त कर सकते हैं।

स्क्रीनशॉट_सेबलिंग_गीत_फैच


1

यदि आप ट्रैविस सीआई में इस त्रुटि संदेश के कारण आए हैं, तो आप उथले क्लोन से बचने के लिए निम्नलिखित सेटिंग का उपयोग कर सकते हैं:

git:
  depth: false

मैंने परीक्षण किया git fetch --tagsलेकिन वह काम नहीं आया।


0

इस कमांड ने मेरी मदद की: git fetch -t


11
कृपया अधिक जानकारी के साथ संपादित करें। कोड-ओनली एंड " ट्राय दिस " जवाबों को हतोत्साहित किया जाता है , क्योंकि उनमें कोई खोज योग्य सामग्री नहीं होती है, और यह नहीं समझाते कि किसी को "कोशिश" क्यों करनी चाहिए।
रिक स्मिथ

जैसा हो सकता है, वैसे ही इसका उत्तर दें fetch
बोजर्न डाहलग्रेन

ओपी की समस्या यह थी कि उसके स्थानीय भंडार में कोई टैग नहीं था। यदि रिमोट है, लेकिन स्थानीय नहीं है, तो आप git fetch -t या git fetch --tags
वोल्फगैंग

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