বিদ্যমান রেপোতে আমি কীভাবে একটি শাখা থেকে একটি নতুন গিটহাব রেপো তৈরি করব?


170

আমার মাস্টার এবং নতুন-প্রকল্প শাখা রয়েছে। এবং এখন আমি নতুন প্রকল্পের শাখার উপর ভিত্তি করে তার মাস্টারের সাথে একটি ব্র্যান্ড নতুন রেপো তৈরি করতে চাই।

পটভূমি: আমার একটি সংগ্রহস্থল রয়েছে যার মধ্যে তিনটি স্বতন্ত্র অ্যাপ্লিকেশন রয়েছে। এটি এভাবে শুরু হয়নি। রেপোতে মূলত একটি অ্যাপ ছিল। সময়ের সাথে সাথে ব্যবসায়ের চাহিদা পরিবর্তন হয়েছে। একটি অ্যাপ্লিকেশন দুটি হয়ে গেল (একটি উত্তরাধিকার সংস্করণ এবং পুনরায় লেখুন)) একটি ওয়েব পরিষেবা যুক্ত হয়েছিল। তিনটি প্রকল্প ধারণ করতে পৃথক শাখা ব্যবহৃত হত। তবে তারা কোনও কোড ভাগ করে না। এবং তাই তাদের নিজস্ব ভাণ্ডারে বিভক্ত করা সহজ হবে be

উত্তর:


294

আমি @ ব্যবহারকারী 292677 এর ধারণা দিয়ে শুরু করেছি এবং আমার সমস্যা সমাধানের জন্য এটি পরিমার্জন করেছি:

  1. গিথুবে নতুন-রেপো তৈরি করুন ।
  2. আপনি যে পুরানো রেপোটি থেকে বের করতে চান তার স্থানীয় কপির সাথে সিডি করুন, যা নতুন-প্রকল্প শাখার ট্র্যাক করার জন্য সেট করা হয়েছে যা নতুন-রেপোয়ের মাস্টার হয়ে উঠবে ।
  3. $ git push https://github.com/accountname/new-repo.git +new-project:master

নতুন গিথুব রেপো শেষ হয়েছে। ফলাফল হলো;

  • একটি নতুন গিথুব সংগ্রহশালা নামে নতুন-রেপো ,
  • যার masterসাথে পুরানো রেপোর নতুন প্রকল্পের সাথে মিল রয়েছে
  • সমস্ত ইতিহাস সংরক্ষিত।

প্রকৃতপক্ষে, আমি আবিষ্কার করেছি যে এই পদ্ধতিটি ব্যবহার করে, আমি শাখাগুলির হাতে-বাছাই করা নির্বাচন করে নতুন রেপো তৈরি করতে পারতাম, যার নামটি আমি চাইছিলাম নামকরণ করে:

$ git push git@github.com:accountname/new_repo +new-project:master +site3a:rails3

ফলাফলটি হ'ল প্রাক-বিদ্যমান সাইট 3 এ শাখাটিও এখন নতুন রেপোতে স্থানান্তরিত হয়েছে এবং রেল 3 হিসাবে প্রদর্শিত হবে । এটি সত্যিই ভালভাবে কাজ করে: নেটওয়ার্ক চিত্রটি সম্পূর্ণ ইতিহাস সহ নতুন মাস্টার এবং রেল 3 দেখায় এবং একে অপরের সাথে তাদের সঠিক সম্পর্কের ক্ষেত্রে।

আপডেট 2013-12-07: এটি অন্য প্রকল্পের সাথে ব্যবহৃত হয়েছে এবং যাচাই করা হয়েছে যে এই রেসিপিটি এখনও কাজ করে।

2018-01-11 আপডেট করুন: https প্রোটোকলের জন্য গিটহাবের সুপারিশটি ব্যবহার করতে পদক্ষেপ 3 আপডেট হয়েছে। রেসিপি এখনও কাজ করে।


হাই @ ডগওয়েদার, এটি ভাগ করে নেওয়ার জন্য ধন্যবাদ। আপনার পদ্ধতির মধ্যে কী আলাদা এবং মূল রিমোট ইউআরএল পরিবর্তন করতে পারবেন, নতুন রেপো পদ্ধতিতে চাপ দিতে পারেন?
ভিনসেন্ট

5
ডগওয়েদার, আমি আপনার সমাধানটি মনে রাখার চেয়ে বেশি ব্যবহার করেছি। ধন্যবাদ! আমার পক্ষে এটি কাজ করার আগে আমাকে প্রথমে ওল্ড_ব্রাঞ্চ চেকআউট করতে হয়েছিল
বজর্ন থার্ট

3
মনে রাখবেন যে এটি ট্যাগগুলি অনুলিপি করবে না। আমি বিশ্বাস করি এর জন্য আপনার প্রয়োজন হতে পারে --follow-tags
ফ্যাক্টর মিস্টিক

1
নোট করুন যে আপনাকে গিতুবতে রেপো তৈরি করার দরকার নেই, আপনি কেবল pushস্থানীয় git initলোকের কাছে (যেমন
গিথুব

1
আমি আমার সমস্ত প্রতিশ্রুতিবদ্ধ ইতিহাস নতুন রেপোতে স্থানান্তর করতে চাই না, আমি কেবল শিশু সংগ্রহস্থলের অন্তর্গত কমিটগুলি অনুলিপি করতে চেয়েছিলাম। এটা কি সম্ভব ??
আরবাজ রিজভী


9
git clone -b new-project /path/to/repo /new/repo/path

সম্পাদনা করুন: গিটহাবের মধ্যে, আপনি রেপোকে "কাঁটাচামচ" করতে পারেন, তারপরে আপনার ক্লোনটির অ্যাডমিন ট্যাবে যান। "সংগ্রহস্থলের নাম" এবং "দৃশ্যমানতার নীচে" শাখাগুলির একটি ড্রপ-ডাউন মেনু সহ "ডিফল্ট শাখা"। চয়ন করুন new-project

পুনঃ সম্পাদনা: আমি কেবল বুঝতে পেরেছি এটি যে masterশাখাটি আপনি সেট করতে চান তা কেবল "ডিফল্ট" শাখা নয়। তাই ...

  • গিটহাব-এ, ক্লোন them/repoকরুন you/repo
  • চালান git clone git@github.com:you/repo.git
  • স্টার্ট gitk
  • [আপনি হয়ত একটি old-masterশাখা তৈরি করতে চাইবেন যাতে আপনি পুরানো কমিটগুলির ট্র্যাকটি হারাবেন না]]
  • new-projectশাখায় সাম্প্রতিক কমিট সন্ধান করুন , প্রতিশ্রুতি বার্তায় ডান ক্লিক করুন এবং "এখানে মাস্টার শাখাটি পুনরায় সেট করুন" নির্বাচন করুন। (আপনি এটি ব্যবহার করে কমান্ড লাইনেও এটি করতে পারেন git-reset, তবে আমি সঠিক প্রার্থনাটি খুঁজে পাইনি))

আপনার গিটহাব রেপোতে আপনার পরবর্তী ধাক্কাটি এর সাথে সম্পন্ন করা দরকার --force অপশনটি , তবে অন্যথায় আপনি হয়ে গেছেন।

এটি যদি আপনার নিজের একটি রেপো থাকে তবে আপনি এটি করছেন…

  • চালান git clone git@github.com:you/orig.git
  • চালান git clone orig copy
  • আমি উপরে বর্ণিত হিসাবে, কিন্তু স্থানীয় copyরেপোর মধ্যে থেকে , masterআপনি যেখানে চান সেখানে শাখাটি পুনরায় সেট করুন ।
  • খালি গিটহাব প্রকল্প তৈরি করুন you/copy। আপনার স্থানীয় সংস্করণ copy, ধাক্কা master, এবং এর কাজটি দূরবর্তী হিসাবে প্রজেক্টটি সেট আপ করতে গিটহাবের নির্দেশাবলী অনুসরণ করুন !

হুম! আমি প্রথম পদক্ষেপটি কীভাবে করব তা নিশ্চিত নই: গিথাবের মধ্যে একটি রেপো ক্লোনিং। আমি মনে করি না এটি সম্ভব।
ডগওয়েদার

@ ডগওয়েদার, এটি গিটহাবে "কাঁটাচামচ" বলা হয়; আমি আমার উত্তরটি স্পষ্টতার জন্য সম্পাদনা করেছি।
জে সি সালমন

আমি একাউন্টের মধ্যে একটি রেপো কাঁটাতে অক্ষম হয়েছি। আপনি নিজে চেষ্টা করেছেন?
ডগওয়েদার

5
  1. গিথুব এ NEW_REPOSITORY তৈরি করুন।
  2. সিডি OLD_REPOSITORY
  3. গিট পুশ https://github.com/accountname/NEW_REPO + মাস্টার: মাস্টার

এবং এটি সব। (দ্রষ্টব্য: গিট ইতিহাস সংরক্ষিত)

আমি উপরের উত্তরটি চেষ্টা করেছিলাম এবং এটি যথেষ্ট নির্দিষ্টভাবে খুঁজে পাইনি কারণ এটি + মাস্টার নির্দিষ্ট করে নি: মাস্টার যা এটির কাজ করার জন্য আমার যা প্রয়োজন ছিল needed এটি দুর্দান্ত কাজ করে।

উত্স (গিথুবের সাথে এসএসএস সমস্যাগুলি এড়াতে আমার সংশোধনীগুলির সাথে): মরিসিয়ো আইলো, প্রাক্তন জাভা সিনিয়র বিকাশকারী, https://www.quora.com/How-do-I-create-a-new-GitHub-repository-from-a -branch-ইন-একটি বিদ্যমান-সংগ্রহস্থল


এটি আসলে গৃহীত উত্তরের চেয়ে বেশি ব্যবহারযোগ্য us পুরানোটিকে নতুন ভাণ্ডারে সরিয়ে ফেলতে ব্যর্থ হলে গিট এসসিআর রিফস্পেক ত্রুটি সম্পর্কে অভিযোগ করে এমন পরিস্থিতিতেও এটি কাজ করে।
ইনফরমেশনিক

2

এটি ভাল উপায় কিনা তা নিশ্চিত নন তবে এটি যেভাবেই সহজ:

git clone -b new-project git@github.com:User/YourProject.git newProjcet

তারপরে গিথুবে একটি নতুন রেপো তৈরি করুন এবং এটি টিপুন।


2

মনে রাখবেন যে আপনি যখন নতুন কোনও রেপো তৈরি করেন, তখন আপনি পুরানোটির সাথে রেফারেন্স হারিয়ে ফেলেন এবং নতুন প্রকল্পের সাথে সিঙ্ক হওয়া মূল প্রকল্পের কোনও আপডেট বজায় রাখা আরও শক্ত করে তোলেন। সম্ভবত রেপো কাঁটাচামচ করা ভাল না?


0

সঠিক উত্তরের সাথে সামান্য সংযোজন:

it গিট পুশ git@github.com: অ্যাকাউন্ট নাম / নতুন_রেপো + পুরাতন_ব্রাঞ্চ: মাস্টার

"git@github.com: অ্যাকাউন্টনাম / new_repo" => গিথব থেকে পান "ক্লোন বা ডাউনলোড করুন" পুলডাউন মেনু

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.