স্থানীয় শাখায় দূরবর্তী মাস্টারকে কীভাবে মার্জ করবেন


238

আমার কাছে একটি প্রকল্পের স্থানীয় শাখা রয়েছে ("কনফিগারআপডেট") যা আমি অন্য কারও প্রকল্প থেকে নকল করেছি এবং এতে আমি প্রচুর পরিবর্তন করেছি এবং তারা আমার স্থানীয় শাখায় যে পরিবর্তনগুলি করেছে তা মার্জ করতে চাই।

আমি চেষ্টা করেছিলাম

git pull --rebase origin configUpdate

তবে এটি সর্বশেষ পরিবর্তনগুলি গ্রহন করতে পারেনি - আমি কীভাবে দুটিকে একীভূত করতে পারি? (এছাড়াও বোনাস পয়েন্টগুলির জন্য আমি pull --rebaseকমান্ডটি দিয়ে কী করেছি ?)


উত্তর:


354

আপনার বৈশিষ্ট্য শাখা থেকে (উদাঃ configUpdate) চালান:

git fetch
git rebase origin/master

বা সংক্ষিপ্ত রূপ:

git pull --rebase

কেন এটি কাজ করে:

  • git merge branchnameশাখা থেকে নতুন কমিটি নেয় branchnameএবং সেগুলি বর্তমান শাখায় যুক্ত করে। প্রয়োজনে এটি স্বয়ংক্রিয়ভাবে শীর্ষে একটি "মার্জ" প্রতিশ্রুতি যুক্ত করে।

  • git rebase branchnameশাখা থেকে নতুন কমিট নেয় branchnameএবং আপনার পরিবর্তনগুলিকে "নীচে" সন্নিবেশ করে। আরও সুনির্দিষ্টভাবে, এটি বর্তমান শাখার ইতিহাসকে এমনভাবে পরিবর্তন করে branchnameযে এর উপরে যে কোনও পরিবর্তন করে এটি এটির ডগায় ভিত্তিক ।

  • git pullমূলত একই git fetch; git merge origin/master

  • git pull --rebaseমূলত একই git fetch; git rebase origin/master

আপনি কেন ব্যবহার করতে চান git pull --rebase না চেয়েgit pull ? এখানে একটি সাধারণ উদাহরণ:

  • আপনি একটি নতুন বৈশিষ্ট্য উপর কাজ শুরু।

  • আপনি নিজের পরিবর্তনগুলি এগিয়ে নিতে প্রস্তুত হওয়ার সাথে সাথে অন্যান্য বিকাশকারীদের দ্বারা বেশ কয়েকটি কমিটি ঠেলে দেওয়া হয়েছে।

  • আপনি যদি git pull (যা মার্জ ব্যবহার করে), তবে আপনার পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে তৈরি হওয়া মার্জ কমিট ছাড়াও নতুন কমিটগুলি দ্বারা সমাধিস্থ করা হবে।

  • আপনি যদি git pull --rebaseপরিবর্তে, গিট দ্রুত আপনার মাস্টারটিকে উজানের দিকে এগিয়ে দেয়, তারপরে আপনার পরিবর্তনগুলি শীর্ষে প্রয়োগ করুন।


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

1
@ মার্টিন: পার্থক্যগুলি আপনার স্থানীয় পরিবর্তন হওয়া উচিত। দূরবর্তী শাখার আর একটি কাঁটাচামচ তৈরি করুন এবং এটির মধ্যে সঠিক ফাইল সামগ্রী রয়েছে কিনা তা পরীক্ষা করুন।
জুইস

4
আমি জানি এটি একটি পুরানো উত্তর, তবে মনে রাখবেন যে আপনি রিবাজের পরিবর্তে কোনও মার্জিই করতে পছন্দ করতে পারেন। আপনার যদি পুনরায় কোনও রিমোট রেপোতে মার্জ করতে হয় যা ইতিমধ্যে আপনার কিছু পরিবর্তন রয়েছে You
ডোমিনো

1
কীভাবে (ধরে নিচ্ছেন আপনি বর্তমানে শাখা কনফিগারেশন আপ করছেন) ... গিট টান মূলত গিট আনার মতোই; গিট একীভূত উত্স / মাস্টার। <- সত্য নয়
ক্রিস

@ ক্রিস: কোন অর্থে এটি সত্য নয়? উত্সাহ / উত্সাহর প্রবাহ হিসাবে ধারনা? বা গিট টান পরিবর্তন করা হয়েছে?
জোয়ি অ্যাডামস

81

আমি এটি জানতে পেরেছিলাম:

$ git fetch upstream
$ git merge upstream/master

6
সুতরাং, যদি আপনি এটি ইতিমধ্যে খুঁজে pull --rebaseনা পেয়ে থাকেন তবে আপনার কাজ করেনি কারণ originআপনার কাঁটাচামড়ার দিকে ইঙ্গিত করেছিল। আপনি যদি এটি কাজ করে git pull --rebase upstream/master
কার্ল বিলেফেল্ড

3
চেষ্টা করুন: গিট একীভূত উত্স / মাস্টার
ক্রিস

আমি একটি আনতে অনুপস্থিত ছিল, এই উত্তরটি আমার জন্য এটি সমাধান করেছে।
নুরেটিন

38

আপনার স্থানীয় শাখায় স্যুইচ করুন

> গিট চেকআউট কনফিগারেশন আপডেট

আপনার শাখায় রিমোট মাস্টারকে মার্জ করুন

> গিট রিবেস মাস্টার কনফিগারেশন আপডেট করুন

আপনার যদি কোনও দ্বন্দ্ব থাকে তবে সেগুলি সংশোধন করুন এবং প্রতিটি বিবাদী ফাইলের জন্য কমান্ডটি করুন

> গিট অ্যাড [পথ_ টু_ফিল / বিবাদযুক্ত_ফায়াল] (যেমন গিট অ্যাড অ্যাপ / সম্পদ / জাভাস্ক্রিপ্ট / পরীক্ষা.জেএস)

রিবেস চালিয়ে যান

> গিট রিবেস - অবিরত


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

13

গিট রিবেস আমার পক্ষে কাজ করে না বলে মনে হচ্ছে। গিট রিবেসের পরে, যখন আমি আমার স্থানীয় শাখায় পরিবর্তনগুলি ঠেকানোর চেষ্টা করি, তখন আমি একটি ত্রুটি পেতে থাকি ("ইঙ্গিত: আপডেটগুলি প্রত্যাখ্যান করা হয়েছিল কারণ আপনার বর্তমান শাখার ডগাটি এর দূরবর্তী অংশের পিছনে রয়েছে the দূরবর্তী পরিবর্তনগুলিকে একীভূত করুন (যেমন 'গিট টানুন)। .. ') আবার চাপ দেওয়ার আগে। ") গিট টানার পরেও। অবশেষে আমার জন্য যা কাজ করেছিল তা হ'ল গিট মার্জ।

git checkout <local_branch>
git merge <master> 

আপনি যদি আমার মতো শিক্ষানবিস হন তবে এখানে গিট মার্জ বনাম গিট রিবেসে একটি ভাল নিবন্ধ আছে। https://www.atlassian.com/git/tutorials/merging-vs-rebasing

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