আমার একটি সার্ভার রয়েছে যা আমি নেমে যাচ্ছি। আমি স্থানান্তর করতে কেবল একটি জিনিস রেখেছি তা আমার সংগ্রহশালা os এই সার্ভারটি আমার একটি প্রকল্পের উত্স (মাস্টার) হিসাবে তালিকাভুক্ত। ইতিহাস রক্ষার জন্য ভান্ডারটি সরানোর উপযুক্ত উপায় কী।
আমার একটি সার্ভার রয়েছে যা আমি নেমে যাচ্ছি। আমি স্থানান্তর করতে কেবল একটি জিনিস রেখেছি তা আমার সংগ্রহশালা os এই সার্ভারটি আমার একটি প্রকল্পের উত্স (মাস্টার) হিসাবে তালিকাভুক্ত। ইতিহাস রক্ষার জন্য ভান্ডারটি সরানোর উপযুক্ত উপায় কী।
উত্তর:
নতুন রেপো অবস্থান যুক্ত করতে,
git remote add new_repo_name new_repo_url
তারপরে সামগ্রীটিকে নতুন জায়গায় চাপ দিন
git push new_repo_name master
অবশেষে পুরানোটি সরিয়ে দিন
git remote rm origin
এর পরে আপনি বিডনলান যা বলেছিলেন তা করতে পারেন এবং নতুন_রেপো_নামটি উত্সে পরিবর্তন করতে.git / config ফাইলটি সম্পাদনা করতে পারেন। আপনি যদি মূলটি (মূল রিমোট রিপোজিটরি) সরিয়ে না ফেলে থাকেন তবে আপনি কেবল নতুন রেপোতে পরিবর্তনগুলি চাপতে পারেন
git push new_repo_name master
git push -u new_repo_name --all।
git remote rename new_repo_name origin
আপনি যদি সমস্ত শাখা এবং ট্যাগগুলি স্থানান্তর করতে চান তবে আপনার নিম্নলিখিত কমান্ডগুলি ব্যবহার করা উচিত:
git clone --mirror [oldUrl]
সমস্ত শাখা সঙ্গে পুরানো রেপো ক্লোন করতে
cd the_repo
git remote add remoteName newRepoUrl
একটি নতুন রিমোট সেটআপ করতে
git push -f --tags remoteName refs/heads/*:refs/heads/*
সমস্ত রেফিকে রেফ / মাথার নীচে ঠেলাতে (যা সম্ভবত আপনি চান)
--tagsএবং refs/heads/*:refs/heads/*এটি সামঞ্জস্যপূর্ণ নয় --mirror। stackoverflow.com/a/26552740/1484831 ভাল কাজ করেছে।
refs/heads/refs/headsব্যবহার git push -f --tags remoteName refs/heads/*:refs/heads/*তাই আমি আছে আনা যায়git push remoteName --mirror
pushসমর্থন করে --mirror। git clone --mirror; cd repo; git push --mirror new_remoteকৌশলটি করা উচিত
এটি আমার জন্য নির্দোষভাবে কাজ করেছিল ।
git clone --mirror <URL to my OLD repo location>
cd <New directory where your OLD repo was cloned>
git remote set-url origin <URL to my NEW repo location>
git push -f origin
যদিও আপনাকে উল্লেখ করতে হবে যে এটি আপনার বর্তমান রেপোর একটি আয়না তৈরি করে এবং তারপরে এটি নতুন জায়গায় ঠেলে দেয়। অতএব, বড় সংগ্রহ বা ধীর সংযোগের জন্য এটি কিছু সময় নিতে পারে ।
git push --mirror originওভার পছন্দ -f।
এটি অনুলিপি করুন। এটা সত্যিই সহজ। :)
ক্লায়েন্টের পক্ষে, আপনার রিমোটগুলি নতুন ইউআরএল হিসাবে প্রয়োজনীয় হিসাবে চিহ্নিত করতে কেবল ক্লায়েন্টের স্থানীয় রেপোতে .git / কনফিগার করুন।
এটি অন্যান্য উত্তরগুলির কিছু অংশে সাজানো হয়েছে।
git clone --mirror git@oldserver:oldproject.git
cd oldproject.git
git remote add new git@newserver:newproject.git
git push --mirror new
--mirror
git init --bare
আমি অন্যদের যা বললাম তা কেবল পোস্টস্টাস্ট করছি, নির্দেশাবলীর তালিকা অনুসরণ করার জন্য।
সংগ্রহস্থলটি সরান: কেবলমাত্র নতুন সার্ভারে, cdপ্যারেন্ট ডিরেক্টরিতে লগইন করুন যেখানে আপনি এখন সংরক্ষণাগারটি ধরে রাখতে চান এবং rsyncপুরানো সার্ভার থেকে অনুলিপি করতে ব্যবহার করুন :
new.server> rsync -a -v -e ssh user@old.server.com:path/to/repository.git .
ক্লায়েন্টদের নতুন সংগ্রহস্থলের দিকে ইঙ্গিত করুন: এখন প্রতিটি ক্লায়েন্টের সংগ্রহস্থল ব্যবহার করে, কেবলমাত্র পুরানো উত্সের পয়েন্টারটি সরিয়ে ফেলুন এবং একটিতে নতুন যুক্ত করুন।
client> git remote rm origin
client> git remote add origin user@new.server.com:path/to/repository.git
git remote set-url origin user@new.server.com:path/to/repository.git
গিটহাবের এই রেসিপিটি একবার দেখুন: https://help.github.com/articles/importing-an-extern-git-repository
আবিষ্কারের আগে আমি বেশ কয়েকটি পদ্ধতি চেষ্টা করেছিলাম git push --mirror।
মোহন মত কাজ!
git clone --mirror ..., git remote add ...,git push --mirror ...
আমি সেখানে তার সমস্ত শাখা সহ একটি রেপো সরানোর জন্য বিটবাকেটের নির্দেশাবলী অনুসরণ করেছি। #চরিত্রটি অনুসরণ করে ব্যাখ্যা সহ পদক্ষেপগুলি এখানে দেখুন :
cd path/to/local/repo
git remote remove origin # to get rid of the old setting, this was not in the BitBucket instructions
git remote add origin ssh://git@bitbucket.org/<username>/<newrepo> # modify URL as needed
git push -u origin --all # pushes _ALL_ branches in one go
git push -u origin --tags # pushes _ALL_ tags in one go
আমার জন্য সুন্দর কাজ করেছেন।
এটি এই উত্তরের একটি ভিন্নতা , বর্তমানে গিটল্যাব একটি গিটার সংগ্রহস্থলকে একটি সার্ভার থেকে অন্য সার্ভারে "মাইগ্রেট" করার পরামর্শ দিয়েছিল ।
আসুন আমরা ধরে নিই যে আপনার পুরানো প্রকল্পটি বলা হয় existing_repo, একটি existing_repoফোল্ডারে সঞ্চিত ।
আপনার নতুন সার্ভারে একটি রেপো তৈরি করুন। আমরা ধরে নেব যে নতুন প্রকল্পটির ইউআরএলgit@newserver:newproject.git
কমান্ড-লাইন ইন্টারফেসটি খুলুন এবং নিম্নলিখিতটি প্রবেশ করুন:
cd existing_repo
git remote rename origin old-origin
git remote add origin git@newserver:newproject.git
git push -u origin --all
git push -u origin --tags
এই পদ্ধতির সুবিধা হ'ল আপনি আপনার পুরানো সার্ভারের সাথে মিলে যাওয়া শাখাটি মুছবেন না।
আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:
git remote set-url --push origin new_repo_url
Http://gitref.org/remotes/ থেকে উদাহরণ
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
origin git://github.com/github/git-reference.git (fetch)
origin git://github.com/github/git-reference.git (push)
$ git remote set-url --push origin git://github.com/pjhyett/hw.git
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
origin git://github.com/github/git-reference.git (fetch)
origin git://github.com/pjhyett/hw.git (push)
এর মতো সহজ হওয়া উচিত:
git remote set-url origin git://new.url.here
আপনি originনিজের নতুন রেপোর জন্য এই নামটি রাখেন - অন্য উত্তরগুলিতে বিস্তারিত হিসাবে পুরাতনটিকে নতুন রেপোর দিকে চাপ দিন। ধরুন আপনি একা কাজ করেন এবং আপনার একটি স্থানীয় রেপো রয়েছে যা আপনার সমস্ত ক্রাফ্টের সাথে আপনি এটিতে আয়না করতে চান, আপনি এটিও করতে পারেন (আপনার স্থানীয় রেপোর ভিতরে থেকে)
git push origin --mirror # origin points to your new repo
তবে দেখুন "গিট পুশ - এমিরর" কি আমার ভাণ্ডার ব্যাক আপ করার জন্য যথেষ্ট? (সব মিলিয়ে --mirrorএকবার না ব্যবহার করুন )।
আপনি সমস্ত ইতিহাসের সাথে রেপিকে নকল করতে গিট-অনুলিপি ব্যবহার করতে পারেন ।
git copy http://a.com/old.git http://a.com/new.git
যদি আপনি এক স্থানীয় থেকে অন্য দিকে যেতে চান এবং আপনার স্থানীয় মেশিনে আপনার বর্তমান উত্সের একটি ব্যাকআপ রাখতে চান তবে আপনি এই পদক্ষেপগুলি ব্যবহার করতে পারেন:
এখন ফোল্ডারে না
git remote get-url origin
উপরের কমান্ডটি বর্তমান প্রত্যন্ত উত্সের url দেয়, মূলটিকে শেষ ধাপে সেট করতে দরকারী
git remote set-url origin git@github.newlocation:folder/newrepo.git
উপরের কমান্ডটি দূরবর্তী উত্সকে নতুন স্থানে সেট করে
git push --set-upstream origin develop
উপরের কমান্ডটি বর্তমান সক্রিয় স্থানীয় শাখাকে ব্রাশনাম বিকাশের সাথে রিমোটে ঠেলে দেয়। অবশ্যই এটি সমস্ত ইতিহাস সংরক্ষণ করে যেমন গিটের সাথে সমস্ত ইতিহাসকেও ঠেলাঠেলি করা হয়।
git remote set-url origin <original old origin>
উপরের কমান্ডটি আপনার বর্তমান উত্সকে দূরবর্তী উত্সকে পিছনে সেট করে: আপনি এটি চান কারণ আপনি আপনার বিদ্যমান ফোল্ডারে রয়েছেন এবং আপনি সম্ভবত বর্তমান স্থানীয় ফোল্ডারের নামটি নতুন ফোল্ডারের সাথে মিশ্রিত করতে চান না যা আপনি রেপো ক্লোনিংয়ের জন্য তৈরি করতে যাচ্ছেন তুমি সবে
আশাকরি এটা সাহায্য করবে,
আপনি যদি একটি সার্ভার থেকে নতুন সার্ভারে একটি #git সংগ্রহস্থল স্থানান্তর করতে চান তবে আপনি এটি এইভাবে করতে পারেন:
git clone OLD_REPOSITORY_PATH
cd OLD_REPOSITORY_DIR
git remote add NEW_REPOSITORY_ALIAS NEW_REPOSITORY_PATH
#check out all remote branches
for remote in `git branch -r | grep -v master `; do git checkout --track $remote ; done
git push --mirror NEW_REPOSITORY_PATH
git push NEW_REPOSITORY_ALIAS --tags
পুরানো সংগ্রহশালা থেকে সমস্ত দূরবর্তী শাখা এবং ট্যাগগুলি নতুন ভাণ্ডারে অনুলিপি করা হবে।
এই আদেশটি একা চালাচ্ছি:
git push NEW_REPOSITORY_ALIAS
নতুন সংগ্রহস্থলে কেবলমাত্র একটি মাস্টার শাখা (কেবল ট্র্যাকিং শাখা) অনুলিপি করবে।