গিটহাবের কাঁটাচামচগুলির মধ্যে মার্জ করা


259

আমি একটি গিটহাবের সংগ্রহস্থল তৈরি করেছি। তারপরে আমি আমার কাঁটাচামচটিতে কিছু পরিবর্তন ঘটিয়েছি। তারপরে মূল সংগ্রহস্থলটি আমার পরিবর্তনগুলি এবং কিছু অন্যান্যকে একত্রিত করেছে। এখন, আমি যে পরিবর্তনগুলি মিস করছি তা আমি মার্জ করতে চাই। আমি ধাক্কা পরে একটি সাধারণ টান চেষ্টা করেছি, কিন্তু এই ফলনটি আমার অনুলিপি করে। এটি করার সর্বোত্তম উপায় কী?

উত্তর:


352

আপনার কাছে প্রতিটি সংগ্রহস্থলের জন্য সম্ভবত একটি "রিমোট" রয়েছে। আপনাকে একটি দূরবর্তী থেকে টানতে হবে এবং অন্যটিতে চাপ দিতে হবে।

আপনি যদি নিজের কাঁটাচামচ থেকে প্রাথমিকভাবে ক্লোন করেন তবে সেই দূরবর্তীটিকে "মূল" বলা হবে। আপনি যদি ইতিমধ্যে এটি যোগ না করে থাকেন তবে আপনাকে প্রথম ব্যক্তির সংগ্রহস্থলটিকে অন্য দূরবর্তী হিসাবে যুক্ত করতে হবে:

git remote add firstrepo git://github.com/first/repo.git

সব সেট আপ করার পরে, আপনার সত্যই সক্ষম হওয়া উচিত

git pull firstrepo master
git push origin

মনে রাখবেন, git pullএকটি ম্যাক্রো যে আছে ছাড়া আর কিছুই নয় git fetchএবং git mergeযাতে। আপনাকে কেবল প্রথম ব্যক্তির ভান্ডার থেকে কমিটের তালিকাটি এনে তার শাখাগুলি আপনার গাছে মিশ্রিত করতে হবে। মার্জ করা উভয় শাখায় আপনার প্রতিশ্রুতি দিয়ে সঠিক জিনিস করা উচিত।

GitHub, এর সমস্ত চিরন্তন দুর্দান্ততায়, অবশ্যই আপনাকে একটি শর্টকাট দেয়। আপনার ভাণ্ডারের কাঁটাতে একটি "ফাস্ট-ফরোয়ার্ড" বোতাম রয়েছে যা আপনি সম্পূর্ণরূপে অন্যদিকে মিশে গেলে আপনার কাঁটাচামচ ধরতে ব্যবহার করতে পারেন।


1
দূরবর্তী অপারেশন দিয়ে পুরোপুরি এটি করার কোনও উপায় আছে কি? যদি আমি সঠিকভাবে বুঝতে পারি তবে এই পদ্ধতির সাহায্যে আপনি স্থানীয় সংগ্রহস্থলের সমস্ত পরিবর্তনগুলি ডাউনলোড করতে পারেন এবং তারপরে এগুলি সবগুলি গিথুবের কাঁটাচামারে ফিরে (চাপ দিন)। আমি বরং কোনওভাবেই সমস্ত পরিবর্তনগুলি সরাসরি গিথুবের কাঁটাচে টানতে চাই।
কেন লিউ

1
না। গিট এটি সমর্থন করে না। ভাগ্যক্রমে, যদিও এখন ওয়েব ইন্টারফেসে গিথুবের একটি মার্জ বোতাম রয়েছে।
cweiske

13
@ কেউইস্কে - এই মার্জ বোতামটি কোথায়? আমি অ্যাডমিন পৃষ্ঠাগুলি এবং প্রধান পৃষ্ঠাগুলি সমস্ত সন্ধান করেছি, কিন্তু এটি খুঁজে পাচ্ছি না :(।
অ্যাডাম

2
@ অ্যাডাম, এটি পুল অনুরোধের পৃষ্ঠাতে রয়েছে। সুতরাং forker তাদের একটি শাখাকে আপনার একটিতে মার্জ করার জন্য পুল অনুরোধটি খুলবে। সেখানে আপনি মার্জ বোতামটি ক্লিক করতে পারেন।
রব বারেকা

2
দ্রুত-ফরওয়ার্ড বোতামটি আর কোনও উপলভ্য বলে মনে হচ্ছে না। তথ্যের জন্য, আমি আমার কমান্ডের মধ্যে আরও একটি গিট ইউআরএল ব্যবহার করেছি:git remote add snaury git@github.com:snaury/script-runner
ওলিব্রে

72

সুতরাং উপরে গৃহীত উত্তরটি আমার পক্ষে পুরোপুরি কার্যকর হয়নি work যথা, এটি কাজ করার সময় মূল গিথুব লেখকের লিঙ্কটি হারিয়ে গেছে বলে মনে হয়েছিল এবং তার পরে আর কাজ করবে বলে মনে হয় না। আমি মনে করি সমস্যাটি ছিল উত্তরটি প্রত্যন্ত নাম এবং শাখার মধ্যে / রেখেছিল। সুতরাং এটি রিমোট থেকে মাস্টার নামক একটি শাখা নিয়ে আসবে তবে এর সাথে কিছুই করতে সক্ষম হবে না। সত্যিই নিশ্চিত নয় কেন।

গিথুব তাদের সাইট থেকে যেভাবে প্রস্তাব দেয় তা এখানে ।

একবার আপনি নিজের কাঁটাযুক্ত রেপো ক্লোন করে ফেললে আপনার আগের উত্তরটির মতোই মূলটিতে একটি রিমোট পয়েন্টিং যুক্ত করতে হবে। তারা এটিকে উজানের দিকে কল করতে পছন্দ করে তবে তাতে কিছু আসে যায় না।

git remote add upstream git://github.com/octocat/Spoon-Knife.git

তাহলে আপনি আনুন

git fetch upstream

এবং আপনি মার্জ করার জন্য উপলব্ধ সংস্করণগুলি দেখতে পাবেন

From git://github.com/octocat/Spoon-Knife.git
 * [new branch]      gh-pages   -> upstream/gh-pages
 * [new branch]      master     -> upstream/master

তারপরে আপনাকে কেবল যে শাখায় মার্জ করতে চান তা চয়ন করতে হবে M মনে হয় এগুলি স্থানীয় শাখা নয়, সেগুলি রিমোটের আওতায় সংরক্ষিত। তবে আপনার যদি আপস্ট্রিম / মাস্টার নামে স্থানীয় কোনও শাখা না থাকে (তবে এটি অনুমোদিত) আপনার নীচের লাইনের সাথে মার্জ হওয়া উচিত:

git merge upstream/master

বিকল্পভাবে আপনি এই লাইনটির সাথে আনা / মার্জ (কমপক্ষে প্রাথমিক আনার পরে) শর্টকাট করতে পারেন:

git pull upstream/master

সমস্যাটি হ'ল যদি আপনার ইতিমধ্যে পরিবর্তনগুলি থাকে তবে আপনি যে পরিবর্তনগুলি অন্তর্ভুক্ত করেন তা একটি মার্জ কমিট তৈরি করে। কিছু ক্ষেত্রে কার্যকর, তবে বেশিরভাগ সময় কিছুটা অর্থহীন।
পাবলো ওলমোস ডি আগুইলেরা সি।

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