यदि आप मौजूदा शाखाओं को संरक्षित करने और इतिहास बनाने के लिए देख रहे हैं, तो यहां एक तरीका है जो मेरे लिए काम करता है।
git clone --mirror https://github.com/account/repo.git cloned-repo
cd cloned-repo
git push --mirror {URL of new (empty) repo}
# at this point only remote cloned-repo is correct, local has auto-generated repo structure with folders such as "branches" or "refs"
cd ..
rm -rf cloned-repo
git clone {URL of new (empty) repo}
# only now will you see the expected user-generated contents in local cloned-repo folder
# note: all non-master branches are avaialable, but git branch will not show them until you git checkout each of them
# to automatically checkout all remote branches use this loop:
for b in `git branch -r | grep -v -- '->'`; do git branch --track ${b##origin/} $b; done
अब, मान लीजिए कि आप स्रोत और गंतव्य भंडार को एक समयांतराल में रखना चाहते हैं। उदाहरण के लिए, वर्तमान दूरस्थ रेपो के भीतर अभी भी गतिविधि है जिसे आप नए / प्रतिस्थापन रेपो में लाना चाहते हैं।
git clone -o old https://github.com/account/repo.git my-repo
cd my-repo
git remote add new {URL of new repo}
नवीनतम अपडेट खींचने के लिए (यह मानते हुए कि आपके पास कोई स्थानीय परिवर्तन नहीं है):
git checkout {branch(es) of interest}
git pull old
git push --all new
NB: मेरे पास अभी तक सबमॉड्यूल का उपयोग करने के लिए नहीं है, इसलिए मुझे नहीं पता कि यदि आपके पास है तो अतिरिक्त चरणों की क्या आवश्यकता हो सकती है।