জিআইটিতে 2 টি শাখা একত্রে মার্জ করা


131

আমি সবেমাত্র জিআইটি ব্যবহার শুরু করেছি এবং এর দুর্দান্ত মনে করি, তবে mergeকমান্ডটি কী করে তা নিয়ে আমি কিছুটা বিভ্রান্ত ।

আমাদের বলুন যে আমাদের "এ" শাখায় একটি কার্যনির্বাহী প্রকল্প রয়েছে।

আমি বাড়িতে গিয়ে এই শাখায় পরিবর্তন আনছি এবং এটিকে "বি" হিসাবে সংরক্ষণ করি। অন্য প্রোগ্রামার "এ" তে পরিবর্তন করে এবং এটি "সি" হিসাবে সংরক্ষণ করে।

"বি" এবং "সি" দুটি শাখা একসাথে একত্রীকরণের, তারপরে নতুন শাখা হিসাবে পরিবর্তনগুলি সংঘটিত করার জন্য কি "ডি" বলার উপায় আছে?

নাকি 'মার্জ' এর বিন্দু মিস করছি?


অন্য শাখায় 'পরিবর্তনগুলি সংরক্ষণ' করার দরকার নেই। একটি এ কাজ করুন এবং তারপরে different বিভিন্ন এ এর ​​একসাথে মার্জ করুন
নিটল

আমি অনুসরণ করি না এ আমার লোকাল কম্পিউটারে থাকবে, ডেভ 1 এর কম্পিউটারে এ এর ​​একটি অনুলিপি থাকবে, এবং ডি 2 এর কম্পিউটারে A এর একটি অনুলিপি থাকবে। উভয় দেবই পরিবর্তন করে, আমি কীভাবে এই পরিবর্তনগুলিকে এক সাথে একত্রী করব?
বিন্দু

< kernel.org/pub/software/scm/git/docs/git-pull.html > দেখুন। ডেভগুলদের সম্ভবত প্রথমে কোথাও তাদের ভাণ্ডার পুশ / আপলোড করা দরকার
নিটল

উত্তর:


196

merge একসাথে দুটি (বা আরও) শাখা আনতে ব্যবহৃত হয়।

একটি সামান্য উদাহরণ:

# on branch A:
# create new branch B
$ git checkout -b B
# hack hack
$ git commit -am "commit on branch B"

# create new branch C from A
$ git checkout -b C A
# hack hack
$ git commit -am "commit on branch C"

# go back to branch A
$ git checkout A
# hack hack
$ git commit -am "commit on branch A"

সুতরাং এখন তিনটি পৃথক শাখা রয়েছে (যার নাম এবি এবং সি) বিভিন্ন মাথা রয়েছে

বি এবং সি থেকে ফিরে এ এ পরিবর্তনগুলি পেতে, চেকআউট এ (ইতিমধ্যে এই উদাহরণে করা হয়েছে) এবং তারপরে মার্জ কমান্ডটি ব্যবহার করুন:

# create an octopus merge
$ git merge B C

আপনার ইতিহাসটি তখন এর মতো দেখতে পাবেন:

…-o-o-x-------A
      |\     /|
      | B---/ |
       \     /
        C---/

আপনি যদি সংগ্রহস্থল / কম্পিউটারের সীমানা জুড়ে মার্জ করতে চান তবে git pullকমান্ডটি দেখুন, যেমন পিসি থেকে শাখা এ (উদাহরণটি দুটি নতুন কমিট তৈরি করবে):

# pull branch B
$ git pull ssh://host/… B
# pull branch C
$ git pull ssh://host/… C

এর অর্থ এই যে উভয় শাখারই একই কোডের টুকরোটি পরিবর্তন হয়েছিল। কমপ্লিটগুলি ঠিক করুন, git add conflicting_filesএবং তারপরেgit commit
নিটল

বলুন ক এ ফাইলটিতে "হ্যালো" শব্দটি রয়েছে, এ এটিকে "হেলো" তে সংশোধন করেছে এবং বি এটিকে "হ্যালো ওয়ার্ল্ড" এ সংশোধন করেছেন। এই ফাইলগুলি মার্জ করার ফলাফল কী হবে?
বিন্দু

উফফ, মানে বি এটি সংশোধন করেছে এবং সি এটি সংশোধন করেছে।
বিন্দু

'সংশোধন' শব্দের সাথে সতর্ক থাকুন যার অর্থ গিটের মধ্যে কিছু আলাদা (বিদ্যমান কমিটগুলি পরিবর্তন করা)। একদিকে 'হ্যালো' তে 'হেলো' এবং অন্যদিকে 'হ্যালো ওয়ার্ল্ড' ফাইল পরিবর্তন করার ফলে মার্জ সংঘাত দেখা দেবে
নিটল

19
@ ডটি: যদিও গিটটি প্রায়শই যাদু বলে মনে হয় তবে এটি আসলে আপনার মনটি পড়তে পারে না - যদি দুটি শাখা একই বিষয়বস্তুতে দুটি ভিন্ন পরিবর্তন করে তবে কীভাবে তাদের মধ্যে পুনর্মিলন করা যায় তা কেবল একজন মানুষই বুঝতে পারেন। এটাই একীভূত বিরোধ।
ক্যাসকেবেল

47

আপনি একত্রীকরণ পরিবর্তন করতে চান তাহলে উপশাখা করার MainBranch

  1. আপনার মেইনব্র্যাঞ্চে থাকা উচিত git checkout MainBranch
  2. তারপরে মার্জ কমান্ড চালান git merge SubBranch

2
@ লাকাইট্যাক্সি: একমত হয়েছে, কখনও কখনও কম বেশি হয়
মার্সেলো স্কোফানো

আমি কি এটিকে পূর্বাবস্থায় ফেরাতে পারি?
যোহানেলি

0

কেস: আপনার যদি ডিফল্টরূপে তৈরি হওয়া মার্জ কমিটিকে উপেক্ষা করার দরকার হয় তবে এই পদক্ষেপগুলি অনুসরণ করুন।

বলুন, ইতিমধ্যে 2 টি কমিট রয়েছে এমন মাস্টার থেকে একটি নতুন বৈশিষ্ট্য শাখা পরীক্ষা করা হয়েছে,

  • "যুক্ত এ", "যুক্ত বি"

Checkout a new feature_branch

  • "যুক্ত সি", "যুক্ত ডি"

বৈশিষ্ট্য শাখা তারপরে দুটি কমিট যুক্ত করে ->

  • "যুক্ত ই", "যুক্ত এফ"

এখানে চিত্র বর্ণনা লিখুন

এখন আপনি যদি বৈশিষ্ট্য_ ব্র্যাঙ্ককে মাস্টারে পরিবর্তন করতে চান git merge feature_branchতবে মাস্টারে বসে থাকুন।

(মোট feature_branch = মাস্টার +2 4 6) এই মাস্টারটি শাখা সব করে যোগ করা হবে + + একটি অতিরিক্ত একত্রীকরণ ভালো কিছু কমিট 'Merge branch 'feature_branch''হিসেবে মাস্টার চলেনি হয়

মত কমিট আপনি কি সত্যিই এই করে (এফবি তৈরি সেই) উপেক্ষা ও একটি একক হিসাবে feature_branch তৈরি পুরো পরিবর্তন যোগ করার প্রয়োজন হলে 'Integrated feature branch changes into master', চালান git merge feature_merge --no-commit

--নো-কমিটের সাহায্যে এটি মার্জটি সম্পাদন করে এবং মার্জ কমিট তৈরির ঠিক আগে থামিয়ে দেয়, আমাদের এখন ফিচার শাখায় যুক্ত হওয়া সমস্ত পরিবর্তনগুলি এখন মাস্টারে থাকবে এবং আমাদের নিজস্ব হিসাবে নতুন কমিট তৈরির সুযোগ পাব।

আরও পড়ুন এখানে: https://git-scm.com/docs/git- विसর

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