2016-03-02 8 views
7

इस article के आधार पर, मैंने एक छोटी सी स्क्रिप्ट बनाई है जिसे पूरे गिट रेपो, सभी शाखाओं, टैग्स और कमेट्स में फ़ाइल की सभी घटनाओं को निकालना है। स्क्रिप्ट:सभी गिट इतिहास से फ़ाइल हटाएं

#!/usr/bin/env node 
var child_process = require('child_process'); 
if (process.argv.length < 3){ 
    console.error('USAGE: git-forget path/to/file') 
    process.exit(1); 
} 
var path = process.argv[2]; 

var phase = 0; 
function printLog(error, stdout, stderr) { 
    if (error) { 
    console.error('ERROR' + error); 
    } 
    console.log(++phase); 
    console.log(stdout); 
} 

child_process.execSync('git filter-branch --force --index-filter \'git rm -f --cached --ignore-unmatch '+ path +'\' --prune-empty --tag-name-filter cat -- --all'); 
child_process.execSync('echo "' + path + '" >> .gitignore', printLog); 
child_process.execSync('git add .gitignore'); 
child_process.execSync('git commit -m "Add ' + path +' to .gitignore"',printLog) 
child_process.execSync('git push origin --force --all',printLog); 
child_process.execSync('git push origin --force --tags',printLog); 

यह स्क्रिप्ट में कुछ रेपोस (जो निजी हैं) पर काम किया है और एक विशिष्ट एक पर यह प्रारंभिक फ़ाइल मैं दूर करने के लिए कोशिश कर रहा था के लिए प्रतिबद्ध रखा। स्क्रिप्ट चलाने के बाद मैंने यह git log --all -- .npmrc किया और प्रारंभिक प्रतिबद्धता पाई। मैं क्या खो रहा हूँ?

+1

sidenote: चेकआउट [बीएफजी, गिट-फ़िल्टर-शाखा के लिए एक सरल, तेज़ विकल्प] (http://rtyley.github.io/bfg-repo-cleaner) – laggingreflex

+0

ने बीएफजी की कोशिश की, यह स्थानीय रूप से काम करता है लेकिन अद्यतन नहीं करता है रिमोट – qballer

+0

@qballer, तो अपने परिवर्तन को दूरस्थ में धक्का दें? – Chris

उत्तर

5

मुझे लगता है कि क्या हुआ है कि आप मर्ज अपने नए इतिहास में हुए परिवर्तनों के लिए नहीं इस रेपो के अन्य उपयोगकर्ताओं बताना भूल गया, बल्कि को rebase है। दस्तावेज़ आप उद्धृत से:

आपके सहयोगकर्ता किसी भी शाखाओं वे अपने पुराने (दागी) भंडार इतिहास के बंद बनाया बताओ, rebase करने के लिए, विलय नहीं। एक विलय प्रतिबद्ध कुछ या सभी दंडित इतिहास को फिर से पेश कर सकता है कि आप केवल शुद्ध करने की परेशानी में गए थे।

एक ही स्क्रिप्ट को फिर से चलाने का प्रयास करें, और देखें कि कोई भी अपने स्थानीय परिवर्तनों को नए सिर में विलय करने के माध्यम से पुराने इतिहास को फिर से पेश नहीं करता है।

+0

जबकि ऐसा लगता है कि आप सही हैं, मुझे इस बारे में कोई जानकारी नहीं है कि इसे कैसे हल किया जाए। – qballer

+0

मेरा जवाब संपादित किया –

+0

धन्यवाद, हल चीजें। – qballer

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