2013-01-21 23 views
5

मेरे पास कुछ फाइलें हैं जिन्हें मैं ढूंढ रहा हूं, लेकिन मुझे नहीं पता कि वे मेरे गिट भंडार (अंतरिक्ष और समय दोनों में) कहां स्थित हैं। मैं यह भी अनुमान लगाता हूं कि यह संभव है कि वे दोनों फाइलें और शाखा जिसमें वे रहते हैं, हटा दिए जा सकते हैं।किसी भी शाखा में किसी भी शाखा में मौजूद किसी भी शाखा को सूचीबद्ध करें

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

धन्यवाद!

उत्तर

3

इसमें कुछ समय पागल है, लेकिन यह है कि तुम क्या चाहते हो सकता है:

#!/bin/sh 

content="[email protected]" 

for hash in $({ 
    git rev-list --objects --all 
    git rev-list --objects -g --no-walk --all 
    git rev-list --objects --no-walk \ 
     $(git fsck --unreachable | 
      grep '^unreachable commit' | 
      cut -d' ' -f3) 
    git fsck --unreachable | grep "^unreachable blob" | cut -d' ' -f3 
} 2> /dev/null | cut -d' ' -f1 | sort | uniq); do 
    if git cat-file blob $hash 2> /dev/null | grep -i $content > /dev/null ; then 
     echo $hash 
    fi 
done 

मैं बिल्कुल हर ब्लॉब सुलभ हो, और उनमें से प्रत्येक में एक विशिष्ट सामग्री की खोज करने की कोशिश की।

आप जेनरेट किए गए हैंश पर प्रत्येक git cat-file -p hash कर सकते हैं और आपकी खोई हुई फ़ाइल पा सकते हैं।


एक तरफ ध्यान दें, मुझे आश्चर्य है कि भंडार में उपलब्ध हर वस्तु को सूचीबद्ध करने का कोई अच्छा तरीका नहीं है। मैं सब कुछ अनपॅक करने और वहां से जाने की सोच रहा था, यह भी एक बेहतर समाधान हो सकता है।


संसाधन:

संबंधित विषय:

संबंधित मुद्दे