গিটহাব: কীভাবে সরকারী ভাণ্ডারের কাঁটাচামচ তৈরি করবেন?


247

আমি কীভাবে সরকারী ভাণ্ডার কাঁটাতে পারি, তবে আমার কাঁটাচামচটি ব্যক্তিগত করতে পারি? আমার কাছে ব্যক্তিগত সংগ্রহস্থলগুলিকে সমর্থন করার জন্য সাবস্ক্রিপশন রয়েছে।

উত্তর:


393

উত্তরগুলি সঠিক তবে পাবলিক রেপো এবং কাঁটাচামচগুলির মধ্যে কীভাবে কোড সিঙ্ক করবেন তা উল্লেখ করবেন না।

এখানে পূর্ণ কর্মপ্রবাহ (আমরা ওপেন সোর্সিংয়ের প্রতিক্রিয়া নেটিভের আগে এটি সম্পন্ন করেছি ):


প্রথমে অন্যরা যেমন বলেছিলেন তেমনই রেপোটিকে নকল করুন (বিশদ এখানে ):

গিথুব ইউআইয়েরprivate-repo মাধ্যমে একটি নতুন রেপো তৈরি করুন (আসুন এটি কল করুন ) । তারপর:

git clone --bare https://github.com/exampleuser/public-repo.git
cd public-repo.git
git push --mirror https://github.com/yourname/private-repo.git
cd ..
rm -rf public-repo.git

বেসরকারী রেপো ক্লোন করুন যাতে আপনি এটিতে কাজ করতে পারেন:

git clone https://github.com/yourname/private-repo.git
cd private-repo
make some changes
git commit
git push origin master

পাবলিক রেপো থেকে নতুন উত্তাপ টানতে:

cd private-repo
git remote add public https://github.com/exampleuser/public-repo.git
git pull public master # Creates a merge commit
git push origin master

দুর্দান্ত, আপনার ব্যক্তিগত রেপোতে এখন সর্বজনীন রেপো এবং আপনার পরিবর্তনগুলির সর্বশেষতম কোড রয়েছে।


অবশেষে, একটি টানা অনুরোধের জন্য ব্যক্তিগত রেপো -> সর্বজনীন রেপো তৈরি করতে:

পাবলিক রেপোর কাঁটাচামচ তৈরি করতে গিটহাব ইউআই ব্যবহার করুন (পাবলিক রেপো পৃষ্ঠার উপরের ডানদিকে ছোট "কাঁটাচামচ" বোতাম)। তারপর:

git clone https://github.com/yourname/the-fork.git
cd the-fork
git remote add private_repo_yourname https://github.com/yourname/private-repo.git
git checkout -b pull_request_yourname
git pull private_repo_yourname master
git push origin pull_request_yourname

এখন আপনি এখানে বর্ণিত হিসাবে পাবলিক-রেপোর জন্য গিথুব ইউআইয়ের মাধ্যমে একটি টান অনুরোধ তৈরি করতে পারেন ।

একবার প্রকল্পের মালিকরা আপনার টানার অনুরোধ পর্যালোচনা করলে তারা এটিকে মার্জ করতে পারে।

অবশ্যই পুরো প্রক্রিয়াটি পুনরাবৃত্তি করা যেতে পারে (যেখানে আপনি রিমোটগুলি যুক্ত করবেন কেবল সেই পদক্ষেপগুলি ছেড়ে দিন)।


2
কেন কেউ খালি খালি ব্যক্তিগত রেপোটিকে জনসাধারণের রেপোর একটি সাধারণ ক্লোনে নতুন রিমোট হিসাবে যুক্ত করতে এবং তারপরে রিমোটে চাপ দিতে পারে না? কি পার্থক্য হবে?
ফালকো মেনেজ

@ ফালকো মেনজে আমারও একই প্রশ্ন রয়েছে। Git-scm.com/docs/git-clone পড়া , দেখে মনে হচ্ছে কোনও স্বাভাবিক git cloneদূরবর্তী ট্র্যাকিং শাখাগুলি স্থাপন করবে এবং সম্ভবত আপনি ক্লোনিং রেপোতে এমন কোনও অন্য কনফিগারেশন স্থাপন করবেন যা আপনি সত্যিই চান না। যেখানে কোনও --bare ক্লোনটি কেবল রিমোট থেকে .git দিরের অনুলিপি করে।
বেনলিচ

1
এটি কি সরকারী শাখায় ব্যক্তিগত প্রতিশ্রুতিবদ্ধ ইতিহাসকে ঠেলে দেবে?
সুখজিন্দর সিং

1
@ সুখজিন্দর সিংহ হ্যাঁ, শেষ পদক্ষেপটি ব্যক্তিগত প্রতিশ্রুতিবদ্ধ ইতিহাসকে জনসাধারণের রেপোতে ঠেলে দেবে। আপনি যদি এটি না চান তবে আপনার প্রতিশ্রুতিগুলি জনসাধারণের রেপোতে মার্জ করার সময় আপনি স্কোয়াশ করতে পারেন এবং আপনার সমস্ত পরিবর্তনগুলির সাথে একটি একক প্রতিশ্রুতি জোর দিয়েছিলেন। যেমন দেখুন stackoverflow.com/questions/5308816/how-to-use-git-merge-squash
মার্টিন Konicek

1
আমি আমার প্রাইভেট রেপো ক্লোন করে নিয়ে এসেছি এবং তারপরে পরিবর্তন করে ধাক্কা দিয়েছি। আমি যে কোনও পরিবর্তন করেছি তা গিটের নজরে নেই। git statusআপ টু ডেট সব কিছু দেখায়, আমি যেভাবেই পরিবর্তন করি না কেন কার্যকারী গাছ পরিষ্কার করে। ফলস্বরূপ আমি কোন কিছু করতে এবং চাপ দিতে পারি না। এটি চেষ্টা করার জন্য আমি আরও নতুন 2 বার তৈরি করা নতুন ব্যক্তিগত রেপো মুছে ফেলেছি কিন্তু এই একই সমস্যাটিতে চালিত হতে থাকি। কোনও পরামর্শ?
উইল

92

এখন আর একটি বিকল্প আছে (জানুয়ারি -2015)

  1. একটি নতুন বেসরকারী রেপো তৈরি করুন
  2. খালি রেপো স্ক্রিনে একটি "আমদানি" বিকল্প / বোতাম রয়েছে এখানে চিত্র বর্ণনা লিখুন
  3. এটিতে ক্লিক করুন এবং বিদ্যমান গিথুব রেপো ইউআরএল রাখুন কোনও গিথুব বিকল্পের উল্লেখ নেই তবে এটি গিথুব রেপোতেও কাজ করে। এখানে চিত্র বর্ণনা লিখুন
  4. সম্পন্ন

19
এটি কিছুটা ভিন্নভাবে কাজ করে। (আমি আগস্ট 2015 এ চেষ্টা করেছি)। আমি আমদানি বিকল্প / বোতামটি পাইনি, সুতরাং এটি গুগল করে এই URL এ শেষ হয়েছিল। Import.github.com/new এখানে, আপনি বিদ্যমান গিথুব ইউআরএল প্রবেশ করতে পারেন এবং এটি পরীক্ষা করুন বোতামটি ক্লিক করতে পারেন। একবার যাচাই হয়ে গেলে আপনি নিজের নতুন রেপোর নাম লিখতে পারেন এবং প্রাইভেট বোতামটি ক্লিক করতে পারেন এবং তারপরে আমদানি শুরু করতে
শিব

2
আমি বিশ্বাস করি @ ম্যাটওয়ানএন্ডেলের অর্থ মন্তব্যটি সঠিক, মূল উত্তর নয়। আমিও শিবের মন্তব্য অনুসরণ করেছি এবং এটি কার্যকর হয়েছে। নোট করুন যে আপনার প্রথমে স্থানীয় ব্যক্তিগত সংগ্রহস্থল তৈরি করা উচিত নয়!
ডেভিড এইচ

যদি আমি এইভাবে একটি ব্যক্তিগত "কাঁটাচামচ" তৈরি করি এবং এটিকে আবার পাবলিক কাঁটাচামড়া তৈরি করতে চাই, আমি কি এটি করতে পারি?
অ্যান্ডারস লিন্ডেন

2
@ শিভা আমি আপনার আপত্তি জানাতে চাই যদি আপনি আপনার মন্তব্যের বাইরে উত্তর দেন।
bebbi

36

বর্তমান উত্তরগুলি কিছুটা পুরানো, তাই স্পষ্টতার জন্য:

সংক্ষিপ্ত উত্তরটি হ'ল:

  1. পাবলিক রেপোর একটি খালি ক্লোন করুন
  2. একটি নতুন ব্যক্তিগত তৈরি করুন।
  3. নতুন ব্যক্তিগতটিকে একটি আয়না ধাক্কা দিন

এটি গিটহাবের নথিভুক্ত: সদৃশ-এ-সংগ্রহস্থল


4
প্রবাহের পরিবর্তনগুলি টানানোর কোনও উপায় আছে? উদার লাইসেন্সধারী একটি রেপোর জন্য এটি গুরুত্বপূর্ণ - আমি আমার রেপোটিকে ব্যক্তিগত করে রেখেছি তবে এখনও প্রবাহের পরিবর্তনগুলিকে মার্জ করতে চাই।
অমরপ্রভূ

2
হ্যাঁ. আপনি অন্য রেপোকে নতুন (ট্র্যাকিং) দূরবর্তী হিসাবে উদ্বোধন করতে সক্ষম হবেন (যেমন 'অন্যান্য-রেপো') এবং তারপরে পর্যায়ক্রমে এখান থেকে পরিবর্তনগুলি আনতে হবে (যেমন, 'গিটটি অন্য-রেপো / স্থিতিশীল' মার্জ করুন)।
স্টিফানো

26

আপনাকে রেপো সদৃশ করতে হবে

আপনি এই দস্তাবেজটি দেখতে পাবেন (গিথুব থেকে)

কাঁটাচামচা না করে কোনও সংগ্রহশালার সদৃশ তৈরি করতে, আপনাকে মূল সংগ্রহস্থলের বিরুদ্ধে একটি বিশেষ ক্লোন কমান্ড চালাতে হবে এবং নতুনটিতে মিরর-পুশ করতে হবে।

নিম্নলিখিত ক্ষেত্রে, আপনি যে ধরণের সংগ্রহের দিকে ধাক্কা দেওয়ার চেষ্টা করছেন - যেমন উদাহরণকারক / নতুন-সংগ্রহস্থল বা উদাহরণস্বরূপ / মিরর করা - ইতিমধ্যে গিটহাবে উপস্থিত থাকতে হবে। আরও তথ্যের জন্য "একটি নতুন সংগ্রহশালা তৈরি করা" দেখুন।

একটি ভান্ডার মিরর করছি

সঠিক সদৃশ তৈরি করতে আপনার খালি-ক্লোন এবং আয়না-পুশ উভয়ই সম্পাদন করতে হবে।

কমান্ড লাইনটি খুলুন এবং এই আদেশগুলি টাইপ করুন:

$ git clone --bare https://github.com/exampleuser/old-repository.git
# Make a bare clone of the repository

$ cd old-repository.git
$ git push --mirror https://github.com/exampleuser/new-repository.git
# Mirror-push to the new repository

$ cd ..
$ rm -rf old-repository.git
# Remove our temporary local repository

আপনি যদি আসল থেকে আপডেট পাওয়ার সাথে সাথে অন্য কোনও জায়গায় কোনও সংগ্রহস্থলটি আয়না করতে চান তবে আপনি একটি আয়না ক্লোন করতে পারেন এবং পর্যায়ক্রমে পরিবর্তনগুলি ধাক্কা দিতে পারেন।

$ git clone --mirror https://github.com/exampleuser/repository-to-mirror.git
# Make a bare mirrored clone of the repository

$ cd repository-to-mirror.git
$ git remote set-url --push origin https://github.com/exampleuser/mirrored
# Set the push location to your mirror

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

$ git fetch -p origin
$ git push --mirror

https://help.github.com/articles/duplicating-a-repository


এটি রেপোর ক্লোন তৈরি করে তবে এটি গিটহাব অর্থে কাঁটাচামচ তৈরি করে না । আপনি যখন গিটহাবে প্রকৃত কাঁটাচামচ তৈরি করেন, এটি কাঁটাচামচ নামের নীচে "উদাহরণস্বরূপ / সংগ্রহস্থল থেকে মিরর থেকে কাঁটাচামচ" একটি পাঠ্য দেখায়। আপনি github.com/exampleuser/new-repository/ নেটওয়র্ক / মেম্বারে নেভিগেট করার সময় এটি অন্যান্য সমস্ত কাঁটাচামচগুলির একটি গাছও দেখায়।
আপাতসিয়ো

20

গিটহাবের এখন একটি আমদানি বিকল্প রয়েছে যা আপনাকে আপনার নতুন আমদানি করা সংগ্রহস্থল পাবলিক বা বেসরকারী যা চান তা চয়ন করতে দেয়

গিথুব সংগ্রহস্থল আমদানি


আমদানি এখনও একটি বড় সংগ্রহশালায় চলছে (5 দিন), তাদের চেক আউট করা খুব দ্রুত তবে সম্ভবত এটি আপ টু ডেট রাখার আরও পদক্ষেপ। মন্থরতা বোধগম্য আমি যেমন সবকিছু না আমদানি শুধু মাস্টার শাখা অনুমান করা হয়, কিন্তু আমি আশা করি এটি দ্রুত ছিল ...
লিয়াম মিচেল

1
আমি একই উত্তর যোগ করতে যাচ্ছিলাম তবে প্রথমে এটি করার জন্য ধন্যবাদ। গত বছরের জানুয়ারী থেকে গিথুব ফ্রি ব্যক্তিগত রেপোগুলি উপলভ্য G : ডি
ওবিএল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.