2012-12-18 22 views
7

मैं सोच रहा था कि क्या किसी के पास ऐसा करने के लिए एक अधिक कुशल, अधिक बुद्धिमान तरीका है। लूपिंग निर्माण के लिए प्रत्येक प्रतिबद्धता को प्रत्येक प्रतिबद्धता से प्रत्येक प्रतिबद्धता से निष्कासित करने की आवश्यकता होती है। कई काम करता है, यह एक लंबा समय लगता है।गिट पूरे इतिहास से सभी हटाए गए फ़ाइलों को हटाएं

git log --pretty=format: --name-status | grep -i ^D | cut -f2- | sort -u | xargs -I {} git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch {}' HEAD 

उत्तर

3

ऐसा लगता है कि प्रत्येक फाइल एक समय में एक को हटा देती है।
विचार करें कि git rm कई फ़ाइलों को निकालने के लिए ले जा सकते हैं।

तो एक सूची का निर्माण उस सूची को बनाना होगा और फ़िल्टर-शाखा को एक बार कॉल करना होगा।
आप "Proper way to remove unwanted files with git filter-branch without git rm failing" में उस दृष्टिकोण का एक उदाहरण देख सकते हैं।

+1

मुझे 'xreps -d -x -f/tmp/files-in-repo.txt'' xargs --delimiter = \\ n -r git rm ... 'के साथ मिल गया है। –

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

  • कोई संबंधित समस्या नहीं^_^