2014-11-14 8 views
6

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

मैं इस समय क्या करने की कोशिश कर रहा हूं git init एक नया भंडार बनाने के लिए है, और फिर क्लोन या उपट्री का उपयोग करके, मेरे मौजूदा रेपो से फ़ाइलों को पकड़ो (मुझे अभी तक मेरा सिर पूरी तरह से नहीं मिला है गलत पेड़ को भड़काना हो सकता है), और फिर जोड़ें, प्रतिबद्ध करें, और फिर इन्हें मेरे नए भंडार में धक्का दें।

git init 
--- get the files from stock repo --- 
git add . 
git commit -m 'Initial commit' 
git remote add origin <url of my new repo> 
git push -u origin master 

मेरे खजाने, Bitbucket पर सभी कर रहे हैं कि अगर एक फर्क नहीं पड़ता,

+0

आप न सिर्फ कहीं और फ़ाइलों और फिर 'Git rsync कर सकते हैं वहाँ init'? –

+0

हाँ, यह बहुत ही स्वाभाविक लगता है अगर बहुत सारे कसम शब्द हैं और ऐसे में रेपो में: पी –

उत्तर

14

आप जैसे पुराने भंडार क्लोन कर सकते हैं:

git clone [email protected]:username/repository.git 

और फिर आप Git निर्देशिका को हटा दें:

git init 
+0

पूरी तरह से काम किया, धन्यवाद! – Tom

1

आप कहीं क्लोन शेयर रेपो से उन फ़ाइलों है, तो आप एक कर सकते हैं:

cd yourNewRepo 
git --work-tree=/path/to/stock/repo add . 
git commit -m 'Initial commit' 

इसका मतलब है कि: आप /path/to/stock/repo से अपने नए रेपो के लिए अपने काम करने वाले पेड़ के रूप में फ़ाइलों पर विचार कर रहे हैं (केवल git add चरण के लिए)

एक बार आपके नए रेपो की अनुक्रमणिका ने उन फाइलों को रिकॉर्ड किया है, आप स्टॉक रेपो के बारे में भूल सकते हैं, और अपने नए रेपो में उन नई फाइलों (बिना किसी पूर्व इतिहास के) को प्रतिबद्ध कर सकते हैं।

1

आप हैं:

rm -R .git/ 

अब आप नए भंडार बनाने पहले ही टीएमआई रेपो क्लोन किया गया है, आप अपने क्लोन के मास्टर को रीसेट कर सकते हैं ताकि वह केवल उस व्यक्ति की टिप को इतिहास के लिए प्रतिबद्ध कर सके वाई

git branch -f master `git commit-tree -m "My new initial commit" origin/master^{tree}` 

और फिर सामान्य रूप से करें, रिमोट को ठीक करें और जैसे ही आप चाहें इतिहास को धक्का दें।

(संपादित: यदि आप गुरु की जाँच की git branch रेफरी को फिर से लिखने के लिए चाहते नहीं होगा मिल गया है, लेकिन आप सामग्री को स्पर्श कर रहे बिल्कुल नहीं है, तो आप सभी चीनी मिट्टी के बरतन के handholding बायपास कर सकते हैं और बस कर

git update-ref -m "Truncating history" refs/heads/master \ 
     `git commit-tree -m "My new initial commit" origin/master^{tree}` 

)

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