মূল গিটহাব সংগ্রহস্থল থেকে নতুন আপডেটগুলি কাঁটাচাটি করা গিটহাব সংগ্রহস্থলীতে টানুন


614

আমি গিটহাবের কারওর ভাণ্ডারকে কাঁটা করেছি এবং মূল সংগ্রহস্থলে করা কমিটস এবং আপডেটের সাথে আমার সংস্করণটি আপডেট করতে চাই। আমি আমার অনুলিপি কাঁটাচামচ করার পরে এগুলি তৈরি করা হয়েছিল।

উৎপত্তিস্থলে পরিবর্তনগুলি কীভাবে টেনে আনব এবং সেগুলি আমার ভান্ডারে অন্তর্ভুক্ত করব?


1
সম্ভাব্য সদৃশ, বা সম্ভবত সম্পর্কিত: গিটহাবের কাঁটাচামচগুলির মধ্যে মার্জ করা

আপনি যে অতিরিক্ত ট্যাগগুলি সিঙ্ক করতে চাইতে পারেন তা git push --force origin --tagsপ্রস্তাবিত সমাধানের পরে করুন!
মিডিয়াভিস

উত্তর:


716

আপনাকে রিমোট হিসাবে আসল সংগ্রহস্থল (যার জন্য আপনি ফোরকি দিয়েছিলেন) যুক্ত করতে হবে।

থেকে GitHub কাঁটাচামচ man পৃষ্ঠা :

কাঁটাচামচ

ক্লোনটি শেষ হয়ে গেলে আপনার রেপোতে একটি রিমোট থাকবে " origin" যা গিটহাবের উপর আপনার কাঁটাচামচকে নির্দেশ করে।
নামটি আপনাকে বিভ্রান্ত করতে দেবেন না, এটি আপনাকে যে মূল রেপোটি দিয়েছিল সেটি নির্দেশ করে না। আপনাকে সেই রেপো ট্র্যাক রাখতে সহায়তা করতে আমরা "আপস্ট্রিম" নামে আরও একটি রিমোট যুক্ত করব:

$ cd github-services
$ git remote add upstream git://github.com/pjhyett/github-services.git
$ git fetch upstream

# then: (like "git pull" which is fetch + merge)
$ git merge upstream/master master

# or, better, replay your local work on top of the fetched branch
# like a "git pull --rebase"
$ git rebase upstream/master

আপনার কাছে একটি রুবি রত্নও রয়েছে যা এই গিটহাব অপারেশনগুলিকে সহজ করতে পারে

কাঁটাত্তয়ালা

" গিট ফর্ক কি গিট ক্লোন? " দেখুন।


14
একটি চমৎকার সংক্ষিপ্তসার জন্য bassistance.de/2010/06/25/git-fu-updating-your-github-fork দেখুন
ভোনসি

2
@ সাইয়েদরাকিব আমি পছন্দ করি git rebase upstream/masterতবে উত্তরে আমি দুটি সম্ভাবনা যুক্ত করেছি।
ভনসি

1
@PaBLoX আপনি একটি রেপো forked, আপনি কাজ করছেন আপনার , রেপো তে আপনার শাখা: রি-বেসের ফলে এবং একটি ধাক্কা ফোর্স: না জগাখিচুড়ি জড়িত। এমনকি একটি টান অনুরোধ অগ্রগতিতে সঠিকভাবে আপডেট করা হবে।
ভোনসি

2
@ পাবলিক্স আপনি কোনও জগাখিচুড়ি তৈরি করবেন না: আপনি git push --force, আপনার স্থানীয় শাখার দ্বারা গিটহাবে আপনার শাখার ইতিহাস প্রতিস্থাপন করে আপনি সবেমাত্র প্রত্যাবর্তন করেছেন। যেহেতু কেবল আপনি দু: খিত শাখা ব্যবহার করছেন তাই কোনও গণ্ডগোল জড়িত নয়।
ভোনসি

2
আমি বুঝেছি. আমি এখনও মনে করি এটি কঠোর, স্বার্থপর এবং স্বজ্ঞাত নয়। তবুও এটি অদ্ভুত যে আমার পরিবর্তনগুলি সর্বদা শীর্ষে থাকবে (শেষ), যখন বাস্তবে সেগুলি আগে করা হয়েছিল। আমি পোস্ট করার আগে সমাধানটি আরও ভাল দেখায় (এখনও অনর্থক)। সমস্যাটি হ'ল যে পরিবর্তনগুলি হ্যাশগুলি পরিবর্তন করে (স্পষ্টতই, যেহেতু একটি নতুন পিতামাতা রয়েছে) এবং সমস্যাগুলি যখন বলা হচ্ছে তখন গিথাবের ভিতরে প্রচুর শব্দ সৃষ্টি করে। তবুও এটি আমাকে অবাক করে দিয়েছে যে উজানের সাথে আপডেট থাকার কোনও উপায় নেই এবং ইতিহাস সম্পর্কে অর্থহীন মার্জ কমিটস বা "মিথ্যা" তৈরি না করে নিজের কাঁটাচামচ পরিচালনা করতে হবে।
পাবলো ওলমোস ডি আগুয়েলেরা সি।

99

ভনসির উত্তর ছাড়াও, আপনি এটি আরও আপনার পছন্দ অনুসারে টুইট করতে পারেন।

দূরবর্তী শাখা থেকে আনার পরে, আপনাকে এখনও কমিটগুলি মার্জ করতে হবে। আমি প্রতিস্থাপন করতে হবে

$ git fetch upstream

সঙ্গে

$ git pull upstream master

যেহেতু গিট টান মূলত গিট আনতে হবে + গিট মার্জ করা।


যদি আমি জানি যে উজানের শাখায় বিদ্যমান ফাইলগুলিতে কোনও পরিবর্তন নেই, তবে কেবল কয়েকটি সংস্থানীয় ফাইল যুক্ত হয়েছে - আমার কি এখনও মার্জ হওয়া দরকার?
আজেক-পিডিএক্স

4
অবশ্যই এটি
সেক্ষেত্রে

কীভাবে একজন আপস্ট্রিম মাস্টার সমস্ত স্থানীয় ফাইলগুলিকে ওভাররাইট করতে পারে (সুতরাং কোনও সংশ্লেষের বিরোধ নেই) আপস্ট্রিম মাস্টার এই ক্ষেত্রে কোডে নেতৃত্ব দিচ্ছেন যাতে আমরা এটির 100% বিশ্বাস করি ... এটি করতে সক্ষম হয়েছেন
snh_nl

1
@ এসএনএইএন_এনএল git rebase upstream masterনোট করুন যে আপনি যদি যথেষ্ট পরিমাণ থেকে সরে এসে থাকেন তবে এটি দ্বন্দ্ব-মুক্ত নয় upstream/masterGit-scm.com/docs/git-rebase দেখুন (tl; dr: এটি আপনার স্থানীয় মাস্টারটিকে উজানের প্রান্তে পুনরায় সেট করে এবং তারপরে বিবর্তনের দিক থেকে স্থানীয় সমস্ত কমিটকে স্মরণ করার চেষ্টা করে)
কাউবার্ট

68

এই ভিডিওটিতে দেখানো হয়েছে কীভাবে সরাসরি গিটহাব থেকে কাঁটাচামচ আপডেট করা যায়

পদক্ষেপ:

  1. গিটহাবে আপনার কাঁটাচামচ খুলুন।
  2. ক্লিক করুন Pull Requests
  3. ক্লিক করুন New Pull Request। ডিফল্টরূপে, গিটহাব আপনার কাঁটাচামচটির সাথে মূলটি তুলনা করবে এবং আপনি যদি কোনও পরিবর্তন না করেন তবে তুলনা করার মতো কিছু থাকতে হবে না।
  4. ক্লিক করুন switching the base। এখন গিটহাব আপনার কাঁটাচামচটি মূলের সাথে তুলনা করবে এবং আপনার সর্বশেষ পরিবর্তনগুলি দেখা উচিত।
  5. Create a pull requestএই তুলনা জন্য ক্লিক করুন এবং আপনার টান অনুরোধ (যেমন, মূল থেকে আপডেট) একটি অনুমানযোগ্য নাম নির্ধারণ করুন।
  6. ক্লিক করুন Create pull request
  7. নীচে স্ক্রোল করুন এবং ক্লিক করুন Merge pull requestএবং শেষ পর্যন্ত Confirmমার্জ করুন। যদি আপনার কাঁটাচামচায় কোনও পরিবর্তন না ঘটে তবে আপনি এটি স্বয়ংক্রিয়ভাবে মার্জ করতে সক্ষম হবেন।

3
দুর্ভাগ্যক্রমে, এই দুর্দান্ত গ্রাফিকাল পদ্ধতিটি গ্রহণযোগ্য উত্তরের মন্তব্যে উপরে বর্ণিত হিসাবে আপনার কাঁটাচামচে অতিরিক্ত শব্দ তৈরি করে। সুতরাং কমান্ড-লাইন পদ্ধতিটি সুপারিশ করা হয়েছে: help.github.com/articles/sycing-a-fork
জোনাথন ক্রস

আমি switching the baseবিকল্পটি খুঁজে পাইনি
আল্পার

64

ব্যবহার করুন:

git remote add upstream ORIGINAL_REPOSITORY_URL

এটি আপনার প্রবাহকে যে স্টোরটি সংগ্রহ করেছিলেন সেগুলিতে সেট করবে। তারপরে এটি করুন:

git fetch upstream      

এটি মূল সংগ্রহস্থল থেকে মাস্টার সহ সমস্ত শাখা আনবে।

আপনার স্থানীয় মাস্টার শাখায় এই ডেটাটি মার্জ করুন:

git merge upstream/master

আপনার জালিত ভাণ্ডারগুলিতে অর্থাৎ উত্স হিসাবে পরিবর্তনগুলি চাপ দিন:

git push origin master

ভাল খবর! আপনি মূল সংগ্রহস্থল সিঙ্ক করে শেষ করেছেন।


কীভাবে একজন আপস্ট্রিম মাস্টার সমস্ত স্থানীয় ফাইলগুলিকে ওভাররাইট করতে পারে (সুতরাং কোনও সংশ্লেষের বিরোধ নেই) আপস্ট্রিম মাস্টার এই ক্ষেত্রে কোডে নেতৃত্ব দিচ্ছেন যাতে আমরা এটি 100% বিশ্বাস করি ... এটি করতে সক্ষম হয়েছেন
snh_nl

একটি উপায় হ'ল স্থানীয় অনুলিপিটি মুছে ফেলা এবং একটি নতুন ক্লোনিং করা :)
আরকে

1

আপনি যদি গিটহাব ডেস্কটপ অ্যাপ্লিকেশন ব্যবহার করছেন তবে উপরের ডানদিকে একটি সিঙ্ক্রোনাইজ বোতাম রয়েছে। Update from <original repo>উপরের বাম দিকে এটি ক্লিক করুন ।

সিঙ্ক্রোনাইজ করার জন্য যদি কোনও পরিবর্তন না হয় তবে এটি নিষ্ক্রিয় হবে।

এটি সহজ করার জন্য এখানে কিছু স্ক্রিনশট রয়েছে


1

যদি কোনও হারাতে না পারে তবে আপনি কেবল নিজের কাঁটাচামচ মুছতে পারেন কেবল সেটিংসে যেতে ... নীচে বিপদ অঞ্চল বিভাগে যান এবং মুছুন মুছুন ক্লিক করুন। এটি আপনাকে পুনরায় সংগ্রহের নাম এবং আপনার পাসওয়ার্ডের পরে ইনপুট করতে বলবে। এর পরে আপনি আবার আসলটি কাঁটাচামচ করুন।


1

আপনি যদি ক্লাইটিবিহীন এটি করতে চান তবে আপনি এটি গিথুব ওয়েবসাইটে পুরোপুরি করতে পারেন।

  1. আপনার কাঁটাচামান ভাণ্ডারে যান।
  2. ক্লিক করুন New pull request
  3. আপনার কাঁটাচামচটি বেস সংগ্রহস্থল এবং মূল (আপস্ট্রিম) সংগ্রহস্থলটিকে প্রধান সংগ্রহস্থল হিসাবে সেট করার বিষয়টি নিশ্চিত করুন। সাধারণত আপনি কেবল মাস্টার শাখা সিঙ্ক করতে চান।
  4. Create new pull request
  5. মার্জিং বোতামের ডানদিকে তীরটি নির্বাচন করুন এবং একীভূত হওয়ার পরিবর্তে পুনরায় বেছে নেওয়ার বিষয়টি নিশ্চিত করুন। তারপরে বোতামটি ক্লিক করুন। এইভাবে, এটি অপ্রয়োজনীয় মার্জ কমিট উত্পাদন করবে না।
  6. সম্পন্ন.

0

পোর্টেন্ট রিপোজিটরির সাথে আপনার কাঁটাযুক্ত সংগ্রহস্থলটি স্বয়ংক্রিয়ভাবে সিঙ্ক করতে আপনি গিটহাবের পুল পুল অ্যাপ ব্যবহার করতে পারেন ।

পড়ুন Readme আরো বিস্তারিত জানার জন্য।

উন্নত সেটআপের জন্য যেখানে আপনি কাঁটাযুক্ত ভাণ্ডারগুলিতে করা আপনার পরিবর্তনগুলি সংরক্ষণ করতে চান, অনুরূপ প্রশ্নের এখানে আমার উত্তরটি দেখুন ।

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