2012-09-18 13 views
13

का उपयोग करके "घातक: खराब वस्तु" त्रुटि यह एक नोब सवाल है लेकिन मैं इसे हल करने के लिए बंदूक के नीचे हूं। मुझे एक गिट सबट्री के साथ एक अजीब समस्या मिली है जो प्रतीत होता है रेपो भ्रष्टाचार के लिए।गिट सबट्री पुश

यहाँ परिदृश्य है: एक Git आधारित परियोजना एक के एक सबट्री तैनाती स्क्रिप्ट उपयोग की परियोजना बी भाग में इस्तेमाल किया जा रहा है सबट्री बाहर धक्का बी की रेपो परियोजना के लिए:

Git सबट्री धक्का -पी उप/पथ/नाम --squash [email protected]: Myco/project_b.git projectb_branch

यह करता धक्का शुरू होता है और

"fatal: bad object {sha}" 

मैं स्रोत रेपो के Git लॉग में SHA लिए खोज की है के साथ विफल । यह एक प्रतिबद्ध में दिखाई देता है:

git-subtree-dir: app/assets/ui 
git-subtree-split: {sha} 

लक्ष्य रेपो (project_b) वास्तव में एक है कि SHA साथ प्रतिबद्ध लेकिन स्रोत रेपो नहीं है। मैं उपट्री शैल स्क्रिप्ट के माध्यम से चला गया, मैं देख सकता हूं कि यह असफल हो रहा है जब वह उस ऑब्जेक्ट को गिट लॉग के साथ देखने की कोशिश करता है (toptree_for_commit फ़ंक्शन कॉलिंग गिट लॉग -l --pretty = format: '% T' {sha})।

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

मेरा ईमानदारी से धन्यवाद!

+0

का उपयोग करके इसे दूरस्थ शाखा बनाएं, क्या आपके स्थानीय 'गिट रीफ्लॉग' में' {sha} 'है? – VonC

+0

नहीं। दुर्भाग्य से नहीं। –

उत्तर

3

मैंने इसे समझ लिया है; मुझे प्रतिबद्ध जानकारी में गलती शा का संदर्भ मिला। सबट्री विभाजन के बाद से बनाया गया था,

  • कदम एक अलग उप-निर्देशिका के लिए सामग्री और फिर
  • सबट्री resplit का उपयोग कर

    • बंद:

      इसे ठीक करने के लिए सबसे आसान तरीका है।

    गड़बड़ की तरह लेकिन बैकिंग की तुलना में बहुत कम त्रुटि प्रवण समस्याग्रस्त प्रतिबद्धता के लिए प्रतिबद्ध होती है और फिर उन्हें पुनः लागू करती है (कुछ समान प्रश्न के उत्तर में सुझाई जाती है)।

    सुंदर नहीं है, लेकिन यह काम पूरा हो गया।

  • +0

    दिलचस्प प्रतिक्रिया। +1 – VonC

    20

    मैं सिर्फ इस मुद्दे में पड़ गए और से हल करने में सक्षम था:

    git remote add shared $url 
    git fetch shared 
    git subtree push -P $prefix shared $branch 
    

    सभी के लिए मदद नहीं कर सकते लेकिन मुझे रेपो ढांचे पर हैक करने होने से बचा लिया।यहां तक ​​कि

    $ git subtree push --prefix lib [email protected]:lib/lib.git master 
    ... 
    ... 
    fatal: bad object {sha} 
    

    फिक्स पहले रिपोजिटरी से परिवर्तन को खींचने के लिए किया गया था (:

    +3

    बस स्पष्ट करने के लिए, मेरे जैसे नोबल्स के लिए $ url, $ उपसर्ग, और $ शाखा को अपने स्वयं के उचित यूआरएल, उपसर्ग और शाखा के साथ भरने की आवश्यकता है। – lnhubbell

    3

    मैं इसी तरह की समस्या का सामना करते आया: git subtree push ... कंप्यूटर, जहां मैं git subtree add ... किया पर काम करता था, लेकिन दूसरे कंप्यूटर पर कार्य नहीं करेगा हालांकि वहाँ कोई बदलाव नहीं) थे:

    git subtree pull --prefix lib [email protected]:lib/lib.git master 
    

    और यहां तक ​​कि यह कुछ भी खींच नहीं था, हालांकि, धक्का ठीक काम किया तो:

    git subtree push --prefix lib [email protected]:lib/lib.git master 
    
    0

    git pull मेरे लिए काम किया। यदि आपकी वर्तमान शाखा रिमोट नहीं है, तो

    `git push -u origin <branchname>` 
    
    संबंधित मुद्दे