2012-10-13 28 views
18

मेरे पास मेरे आईओएस ऐप्स में से एक स्क्रिप्ट है जिसे गिट संशोधन हैश प्राप्त करना चाहिए और इसे संस्करण संख्या में रखना चाहिए। इस स्क्रिप्ट में मैं गिट - git-dir = "$ PROJECT_DIR" शो -s --pretty = प्रारूप: उस के लिए% h चलाता हूं। हालांकि, मुझे संदेश मिलता है कि निर्देशिका एक गिट भंडार नहीं है। मैं PROJECT_DIR वर गूंज और निम्न कार्य टर्मिनल पर जाएँ:गिट के साथ --git-dir = परिणाम 'गिट रिपोजिटरी नहीं'

cd projectDirPath 
git show -s --pretty=format:%h 

क्या काम नहीं करता है:

git --git-dir=projectDirPath show -s --pretty=format:%h 

Am मैं कुछ याद आ रही? प्रलेखन में कहा गया है कि मैं - गिट-डीआईआर के साथ एक गिट रिपोजिटरी के पथ को निर्दिष्ट कर सकता हूं और निर्दिष्ट पथ स्पष्ट रूप से एक गिट भंडार है क्योंकि सभी गिट कमांड बिना किसी समस्या के काम करते हैं यदि मैं पहले उस पथ में सीडी करता हूं। हालांकि अगर मैं इस पथ में नहीं हूं, तो निर्दिष्ट करें - गिट-डीआईआर काम नहीं करता है।

सादर, माइकल

+2

'--git-dir' को आपके भंडार के '.git' फ़ोल्डर पर इंगित करने की आवश्यकता है। 'Git --git-dir = projectDirPath/.git show -s --pretty = format:% h' आज़माएं। – jszakmeister

+0

धन्यवाद, यह समस्या थी। आप इसे एक उत्तर के रूप में पोस्ट करना चाहते हैं ताकि मैं इसे समस्या के उत्तर के रूप में चिह्नित कर सकूं! –

+0

बढ़िया! मैंने इसे एक उत्तर के रूप में भी पोस्ट किया। – jszakmeister

उत्तर

24

जब --git-dir का उपयोग कर, आप अपने भंडार का .git फ़ोल्डर में बात करने के लिए की जरूरत है। आज़माएं:

git --git-dir=projectDirPath/.git show -s --pretty=format:%h 

मुझे इसे स्वयं याद रखने में कोई समस्या है। मुझे याद रखने में मदद करने के लिए कि क्या करना है, मैं यह याद रखने की कोशिश करता हूं कि विकल्प बिल्कुल वही मांग रहा है जो यह चाहता है: .git निर्देशिका (गिट-डीआईआर) का मार्ग।

1

--git-dir के अलावा, --work-tree सेटिंग भी मदद कर सकता है। लिपि के लिए, प्रासंगिक वातावरण का उपयोग करना अच्छा है (यह आसान है), उदा।

#!/bin/bash -ex 
export GIT_WORK_TREE=/path/to/repo 
export GIT_DIR=/path/to/repo/.git 
git show -s --pretty=format:%h