গিট একত্রিত করুন মাস্টার বৈশিষ্ট্য শাখায়


1012

ধরা যাক গিটে আমাদের নিম্নলিখিত পরিস্থিতি রয়েছে:

  1. একটি তৈরি সংগ্রহস্থল:

    mkdir GitTest2
    cd GitTest2
    git init
    
  2. মাস্টারের কিছু পরিবর্তন সংঘটিত হয় এবং প্রতিশ্রুতিবদ্ধ হয়:

    echo "On Master" > file
    git commit -a -m "Initial commit"
    
  3. বৈশিষ্ট্য 1 মাস্টার বন্ধ করে দেওয়া হয়েছে এবং কিছু কাজ শেষ হয়েছে:

    git branch feature1
    git checkout feature1
    echo "Feature1" > featureFile
    git commit -a -m "Commit for feature1"
    
  4. এদিকে, মাস্টার-কোডে একটি বাগ আবিষ্কার হয়েছে এবং একটি হটফিক্স-শাখা প্রতিষ্ঠিত হয়েছে:

    git checkout master
    git branch hotfix1
    git checkout hotfix1
    
  5. বাগটি হটফিক্স শাখায় স্থির করা হয়েছে এবং মাস্টারে ফিরে একীভূত করা হয়েছে (সম্ভবত কোনও টানার অনুরোধ / কোড পর্যালোচনা পরে):

    echo "Bugfix" > bugfixFile
    git commit -a -m "Bugfix Commit"
    git checkout master
    git merge --no-ff hotfix1
    
  6. বৈশিষ্ট্য 1 এ বিকাশ অব্যাহত রয়েছে:

    git checkout feature1
    

বলুন আমার বৈশিষ্ট্য শাখায় আমার হটফিক্স দরকার, কারণ বাগটিও সেখানে ঘটে। আমার বৈশিষ্ট্য শাখায় কমিটগুলি নকল না করে আমি কীভাবে এটি অর্জন করতে পারি?

আমি আমার বৈশিষ্ট্য শাখায় দুটি নতুন কমিট পেতে আটকাতে চাই যার বৈশিষ্ট্যটির প্রয়োগের সাথে কোনও সম্পর্ক নেই। এটি আমার জন্য বিশেষত গুরুত্বপূর্ণ মনে হয় যদি আমি টানার অনুরোধগুলি ব্যবহার করি: এই সমস্ত কমিটগুলিও পুল অনুরোধে অন্তর্ভুক্ত করা হবে এবং এটি ইতিমধ্যে সম্পন্ন হয়েছে যদিও এটি পর্যালোচনা করতে হবে (হটফিক্স ইতিমধ্যে মাস্টারটিতে রয়েছে)।

আমি এটি করতে পারি না git merge master --ff-only: "মারাত্মক: দ্রুত এগিয়ে যাওয়া, গর্ভপাত বন্ধ করা সম্ভব নয়" "তবে আমি নিশ্চিত নই যে এটি আমাকে সাহায্য করেছিল কিনা।


8
শাখাটি feature1যদি সম্পূর্ণ স্থানীয় হয় তবে একবার দেখুন git rebase
জোকস

19
ধন্যবাদ, গিট শিক্ষানবিশ হিসাবে, git rebaseআমার কাছে কালো যাদু বলে মনে হচ্ছে ....
থিওমেগা

13
যদি শাখাটি বৈশিষ্ট্যযুক্ত থাকে তবে কেবলমাত্র বাগ ফিক্সটি সেখানে ঘটানো উচিত নয় (অন্তত যদি কোনও ব্লকিং বাগ না হয়) যেহেতু এই শাখার লক্ষ্য একটি নতুন বৈশিষ্ট্য দেখানো। মাস্টারটির সাথে একত্রীকরণের পরে বাগটি ঠিক করা হবে যেখানে ফিক্সের সাথে প্রতিশ্রুতি রয়েছে।
জিপি

21
সম্ভবত নতুনদের জন্য এটি লক্ষণীয় যে 3. এ git branch feature1এবং git checkout feature1একত্রিত হতে পারে git checkout -b feature1এবং 4 এ সম্পূর্ণরূপে হ্রাস করা যেতে পারেgit checkout -b hotfix1 master
নারুটো সেম্পাই

3
আপনি কি আবার ফিরে এসে গৃহীত উত্তর পরিবর্তন করতে ইচ্ছুক হবেন, কারণ বর্তমান গৃহীত উত্তরটি ভয়াবহ।
সর্বজনীন

উত্তর:


1212

আমরা কীভাবে বৈশিষ্ট্য শাখায় মাস্টার শাখাটি মার্জ করব? সহজ:

git checkout feature1
git merge master

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

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

তাহলে আপনি আপনার কর্মপ্রবাহে ঠিক কী করেছেন? আপনার সাথে কাজ করার জন্য দুটি শাখা রয়েছে, আপনার বৈশিষ্ট্য 1 শাখাটি মূলত গিটফ্লো মডেলের "বিকাশ" শাখা।

আপনি মাস্টার থেকে একটি হটফিক্স শাখা তৈরি করেছেন এবং এটিকে আবার একত্রিত করেছেন। এবং এখন আপনি আটকে আছেন।

গিটফ্লো মডেল আপনাকে হটফিক্সকে বিকাশ শাখায় মার্জ করতে বলে, যা আপনার ক্ষেত্রে "বৈশিষ্ট্য 1"।

সুতরাং আসল উত্তরটি হ'ল:

git checkout feature1
git merge --no-ff hotfix1

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

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


7
না। বাগটি সংশোধন করার প্রতিশ্রুতি হটফিক্স শাখায় কেবল একবার উপস্থিত হয়, যদিও শাখার নামটি মাস্টার এবং ডেভেল শাখাগুলিতে মিশ্রিত হয়ে গেলে এটি মুছে ফেলা হয়। মার্জ কমিট কেবল মার্জ দ্বারা প্রবর্তিত পরিবর্তনগুলি দেখায় যা সদৃশ প্রতিশ্রুতি মত। কিন্তু এইভাবে গিট কাজ করে: শাখা এবং ফিরে একত্রিত। আসল বিকাশ কাজ কেবলমাত্র অ-মার্জ কমিটের মধ্যেই ঘটে এবং ফলাফলটি যদি সফ্টওয়্যারটিতে কাজ করে তবেই মার্জটি গ্রহণ করা হয়।
সোভেন

42
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এটি গিটহাবের পুল অনুরোধ বৈশিষ্ট্যটির সাথেও ভাল কাজ করে।
নস্টালজি.ইও

125
আমি লক্ষ এটা মূল্য একটি মনে git merge masterআপনার থেকে একত্র করে দেবে স্থানীয় গুরু কপি তাই, এমনকি যদি আপনি একটি কাজ করেছি git pullআপনার বৈশিষ্ট্য শাখায় পর অন্য কেউ মাস্টার মধ্যে একটি ভিন্ন শাখা একীভূত, আপনি করতে হবে git checkout master, তারপর git pull, তারপর git checkout feature1আবার এবং তারপর git merge master
দামিক

50
@ ডিডিক বা ন্যায়সঙ্গত git fetchএবংgit merge origin/master
ইয়ং্বর ক্রিশ্চিয়েনসেন

20
@ ড্যামিক @ ইয়াংভার-ক্রিস্টিয়ানসন git pull origin masterস্বয়ংক্রিয়ভাবে orgin/masterবর্তমান শাখায় মার্জ হবে
L422Y

612

আপনার শাখাটি মাস্টারে পুনরায় চালু করতে সক্ষম হওয়া উচিত:

git checkout feature1
git rebase master

উত্থাপিত সমস্ত বিবাদগুলি পরিচালনা করুন। আপনি যখন বাগফিক্সগুলি (ইতিমধ্যে মাস্টার মধ্যে) নিয়ে কমিটসে পৌঁছবেন তখন গিট বলবেন যে কোনও পরিবর্তন হয়নি এবং সম্ভবত সেগুলি ইতিমধ্যে প্রয়োগ করা হয়েছিল। তারপরে আপনি রিবেসটি চালিয়ে যান (ইতিমধ্যে মাস্টারটিতে করা কমিটগুলি এড়িয়ে যাওয়ার সময়) দিয়ে

git rebase --skip

আপনি যদি git logআপনার বৈশিষ্ট্য শাখায় একটি সম্পাদন করেন তবে আপনি বাগফিক্স কমিট একবারে এবং মাস্টার অংশে প্রদর্শিত হবে।

আরও বিশদ আলোচনার জন্য, git rebase( https://git-scm.com/docs/git-rebase ) -এ গিট বইয়ের ডকুমেন্টেশনগুলি দেখুন যা এই সঠিক ব্যবহারের ক্ষেত্রে coverাকা দেয়।

================= অতিরিক্ত প্রসঙ্গের জন্য সম্পাদনা করুন ======================

এই উত্তরটি বিশেষত @ থিওমেগা কর্তৃক তাঁর বিশেষ পরিস্থিতি বিবেচনায় নিয়ে জিজ্ঞাসা করা প্রশ্নের জন্য সরবরাহ করা হয়েছিল। এই অংশটি নোট করুন:

আমি আটকাতে চাই [...] আমার বৈশিষ্ট্য শাখায় প্রতিশ্রুতিবদ্ধ যার বৈশিষ্ট্যটির প্রয়োগের সাথে কোনও সম্পর্ক নেই।

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

প্রশ্নের শিরোনামটি পড়ে এমন ব্যবহারকারীদের সম্বোধন করতে, প্রশ্নের প্রকৃত বিষয়বস্তু এবং প্রেক্ষাপটটি এড়িয়ে যান এবং তারপরে কেবল শীর্ষ উত্তরটি অন্ধভাবে পড়ে ধরে নিন যে এটি সর্বদা তাদের (পৃথক) ব্যবহারের ক্ষেত্রে প্রযোজ্য হবে, আমাকে বিস্তৃত করার অনুমতি দিন:

  • কেবলমাত্র বেসরকারী শাখাগুলি রিবেস করুন (অর্থাত্ এটি কেবলমাত্র আপনার স্থানীয় সংগ্রহস্থলে বিদ্যমান এবং অন্যদের সাথে ভাগ করা হয়নি)। ভাগ করা শাখাগুলি মুক্ত করা অন্য ব্যক্তিদের কাছে থাকা অনুলিপিগুলি "ভেঙে" ফেলবে।
  • যদি আপনি কোনও শাখা থেকে পরিবর্তনগুলি (এটি মাস্টার বা অন্য কোনও শাখা) জনসাধারণের একটি শাখায় সংহত করতে চান (উদাহরণস্বরূপ আপনি একটি শাখাটিকে একটি টানার অনুরোধ খোলার জন্য চাপ দিয়েছেন, তবে এখন মাস্টারের সাথে বিরোধ রয়েছে, এবং আপনাকে আপডেট করতে হবে এই বিবাদগুলি সমাধান করার জন্য আপনার শাখাটি) আপনাকে সেগুলিতে মার্জ করতে হবে (উদাহরণস্বরূপ git merge master@ সোভেনের উত্তর হিসাবে)।
  • আপনি যদি এটি পছন্দ করেন তবে আপনি শাখাগুলি আপনার স্থানীয় বেসরকারী শাখায় মার্জ করতে পারেন তবে সচেতন হন যে এটির ফলে আপনার শাখায় "বিদেশী" প্রতিশ্রুতি আসবে।

অবশেষে, আপনি যদি এই উত্তরটি আপনার পরিস্থিতিটির পক্ষে সবচেয়ে উপযুক্ত না তবে এই উত্তরটি @ থোমেগার পক্ষে হলেও উপযুক্ত নয়, নীচে একটি মন্তব্য যুক্ত করা বিশেষভাবে সহায়ক হবে না: কোন উত্তরটি নির্বাচন করা হয়েছে তা আমি নিয়ন্ত্রণ করি না, কেবলমাত্র থিওমেগা করে।


136
না, এটি নিরাপদ নয়: আপনি যদি পুনর্বাসন করেন তবে আপনি শাখার ইতিহাস পরিবর্তন করছেন, যা শাখাটি টানবে এমন বিকাশকারীদের প্রভাবিত করবে। উদাহরণস্বরূপ, গিট আপনাকে ডিফল্টরূপে একটি রিবেসড শাখাকে ধাক্কা দিতে দেবে না: -fরিবেসড সংস্করণ দিয়ে শাখাটি ওভাররাইট করার সময় আপনাকে আপডেটটি জোর করতে হবে । সাবধান হও!
ডেভিড সুল্ক

17
গিট ব্যবহার করে পেশাদার দলগুলি কীভাবে এই সমস্যাটি পরিচালনা করে? শুধু মনোযোগ দিন, সাবধানে চিন্তা করুন এবং তারপরে একটি করবেন -f? বা আমার সম্পূর্ণ কর্মপ্রবাহ ত্রুটিযুক্ত কারণ আমার একটি প্রয়োজন -f?
থিওমেগা

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

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

11
হ্যাঁ, আপনার সর্বজনীন শাখাগুলি পুনর্বার করা উচিত নয়। যাইহোক, ওপি-র প্রশ্নটি মনে হয়েছিল যে একটি নতুন masterশাখা একটি ব্যক্তিগত শাখায় সংহত করার সাথে মোকাবিলা করবে (তিনি "তার" স্থানীয় শাখার উল্লেখ করেছেন)। rebaseসেক্ষেত্রে , ঠিক আছে এবং আপনার বর্ণিত "ক্লিনিং আপ" এর একই ব্যবহার।
ডেভিড সুল্ক

69

এই নিবন্ধের ভিত্তিতে , আপনার উচিত:

  • মাস্টার নতুন সংস্করণ উপর ভিত্তি করে যা নতুন শাখা তৈরি করুন

    git branch -b newmaster

  • আপনার পুরানো বৈশিষ্ট্য শাখাটিকে নতুনতে মার্জ করুন

    git checkout newmaster

  • নতুন বৈশিষ্ট্য শাখায় বিরোধের সমাধান করুন

প্রথম দুটি কমান্ড একত্রিত হতে পারে git checkout -b newmaster

এইভাবে আপনার ইতিহাস পরিষ্কার থাকে কারণ আপনার পিছনে মার্জগুলির দরকার নেই। আর আপনাকে এতটা সতর্ক হওয়ার দরকার নেই যেহেতু আপনাকে গিট রিবেস করার দরকার নেই।


7
আপনি যদি সম্পর্কিত গিট কমান্ডটি প্রতিটি পয়েন্ট অনুসরণ করেন তবে দুর্দান্ত হবে। অন্যথায় এটি আমার কাছে মনে হয় এটি প্রকৃতপক্ষে আরও নিরাপদ এবং পরিষ্কার বিকল্প।
ভার্জিলিড

@ জিমি আমাদের একটি প্রত্যন্ত শাখা থাকলে কী হবে? আমরা আবার নতুন আপডেট বৈশিষ্ট্য শাখা আবার তৈরি করব? বা আমরা কি কেবল দূরবর্তী-প্রবাহকে সেট করতে পারি?
বিল

@ ভার্জিলিডি আমি সম্পর্কিত গিট কমান্ড সহ আরও বিশদ সহ সবেমাত্র নিজের উত্তর পোস্ট করেছি ।
জেদেব

29

git merge

আপনি নীচের পদক্ষেপগুলি অনুসরণ করতে পারেন

1. origin/masterশাখা featureশাখায় মার্জ

# step1: change branch to master, and pull to update all commits
$ git checkout master
$ git pull

# step2: change branch to target, and pull to update commits
$ git checkout feature
$ git pull

# step3: merge master to feature(⚠️ current is feature branch)
$ git merge master

২. featureশাখায় মার্জ করুন origin/masterbranch

origin/masterদূরবর্তী মাস্টার শাখা, যখন masterস্থানীয় মাস্টার শাখা

$ git checkout master
$ git pull origin/master

$ git merge feature
$ git push origin/master




রিবেস হাইপাইয়ের মতো মনে হচ্ছে! ভাল পুরানো মার্জ :)!
চিরদিনের জন্য

27

জিমির উত্তরটি এই প্রক্রিয়াটি সাধারণত বর্ণনা করে। এখানে নির্দিষ্টকরণ রয়েছে:

  1. একটি নতুন শাখা তৈরি করুন এবং স্যুইচ করুন। নিশ্চিত হয়ে নিন যে নতুন শাখাটি ভিত্তিতে রয়েছে masterতাই এতে সাম্প্রতিক হটফিক্স অন্তর্ভুক্ত থাকবে।

    git checkout master
    git branch feature1_new
    git checkout feature1_new
    
    # Or, combined into one command:
    git checkout -b feature1_new master
    
  2. নতুন শাখায় স্যুইচ করার পরে, আপনার বিদ্যমান বৈশিষ্ট্য শাখা থেকে পরিবর্তনগুলি মার্জ করুন। এটি হটফিক্সের কমিটগুলি সদৃশ না করে আপনার কমিটগুলি যুক্ত করবে।

    git merge feature1
    
  3. নতুন শাখায়, আপনার বৈশিষ্ট্য এবং মাস্টার ব্রাঞ্চের মধ্যে যে কোনও বিরোধের সমাধান করুন।

সম্পন্ন! আপনার বৈশিষ্ট্য বিকাশ অব্যাহত রাখতে এখন নতুন শাখাটি ব্যবহার করুন।


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

4
আপনি ঠিক বলেছেন, এটি পুরো সময় করা উচিত নয়। কেবলমাত্র যখন (1) মাস্টারের পরিবর্তনগুলি আপনার বৈশিষ্ট্যের জন্য প্রয়োজনীয়, বা (২) আপনি নিজের শাখাকে মাস্টারের সাথে একীভূত করতে চলেছেন এবং দ্বন্দ্ব হতে পারে। এবং বিশৃঙ্খলা এড়ানোর জন্য, আপনি নিজের শাখাটি মার্জ হওয়ার পরে মুছতে পারেন।
jkdev

11

এখানে একটি স্ক্রিপ্ট আপনি নিজের মাস্টার শাখাটিকে আপনার বর্তমান শাখায় মার্জ করতে ব্যবহার করতে পারেন।

লিপিটি নিম্নলিখিতটি করে:

  • মাস্টার শাখায় স্যুইচ করে
  • মাস্টার শাখা টান দেয়
  • আপনার বর্তমান শাখায় ফিরে যায়
  • মাস্টার শাখাটিকে আপনার বর্তমান শাখায় মার্জ করে

এই কোডটি ব্যাচ ফাইল (.bat) হিসাবে সংরক্ষণ করুন এবং স্ক্রিপ্টটি আপনার সংগ্রহস্থলের যে কোনও জায়গায় রাখুন। তারপরে এটি চালানোর জন্য এটিতে ক্লিক করুন এবং আপনি সেট হয়ে গেছেন।

:: This batch file pulls current master and merges into current branch

@echo off

:: Option to use the batch file outside the repo and pass the repo path as an arg
set repoPath=%1
cd %repoPath%

FOR /F "tokens=*" %%g IN ('git rev-parse --abbrev-ref HEAD') do (SET currentBranch=%%g)

echo current branch is %currentBranch%
echo switching to master
git checkout master
echo.
echo pulling origin master
git pull origin master
echo.
echo switching back to %currentBranch%
git checkout %currentBranch%
echo.
echo attemting merge master into %currentBranch%
git merge master
echo.
echo script finished successfully
PAUSE

10

আপনার বৈশিষ্ট্য শাখায় যে সঠিক কমিট দরকার তা টানতে আপনি একটি "চেরি-পিক" করতে সক্ষম হতে পারেন ।

একটি কি git checkout hotfix1hotfix1 ডালে জন্য। তারপরে প্রশ্নের git logমধ্যে থাকা কমিটের SHA-1 হ্যাশ (এলোমেলো অক্ষর এবং সংখ্যার বৃহত ক্রম যা স্বতন্ত্রভাবে একটি প্রতিশ্রুতি চিহ্নিত করে) পেতে একটি করুন। এটি অনুলিপি করুন (বা প্রথম 10 বা এর মতো অক্ষর)।

তারপরে, git checkout feature1আপনার বৈশিষ্ট্য শাখায় ফিরে যেতে।

তারপর, git cherry-pick <the SHA-1 hash that you just copied>

এটি সেই প্রতিশ্রুতিটি এবং কেবলমাত্র সেই প্রতিশ্রুতিগুলি আপনার বৈশিষ্ট্য শাখায় টেনে আনবে । এই পরিবর্তনটি শাখায় থাকবে - আপনি কেবল এটি "চেরি-বাছাই" করেছেন Then

অবশেষে, আপনি যখন একটি বৈশিষ্ট্য শাখায় (বা তদ্বিপরীত) একটি শাখা থেকে অন্য একত্রীকরণ সম্পাদন করেন, গিট স্বীকৃতি জানাবে যে আপনি ইতিমধ্যে সেই বিশেষ প্রতিশ্রুতিতে মার্জ হয়ে গেছেন, জেনে রাখুন যে এটি আর তৈরি করতে হবে না এবং ঠিক এটি "এড়িয়ে যান"।


আমি এটি একটি ভাল ধারণা বিবেচনা করি না। তারপরে, আইএমও, হটফিক্স কমিট আপনার বৈশিষ্ট্য শাখার ইতিহাসে সত্যই প্রদর্শিত হবে যা আপনি মূলত চান না।
মার্টিন পেকা

1
"অবশেষে, আপনি যখন নিজের বৈশিষ্ট্য শাখায় (বা তদ্বিপরীত) একটি শাখা থেকে অন্য একত্রীকরণ সম্পাদন করবেন, গিটটি চিনতে পারবে যে আপনি ইতিমধ্যে মার্জ হয়ে গেছেন [...]" - আসলে কীভাবে এটি কাজ করে? আমি মনে করি না যে git mergeএই "রিপ্লে কমিটস" - এর মধ্যে কাজ করে যা আপনি ইঙ্গিত করছেন বলে মনে হয় ("এবং কেবল এটি এড়িয়ে যান")। চেরি পিকিং এবং মিশে যাওয়া মিশ্রিতভাবে সমস্যাগুলি দেখা দিতে পারে; দেখুন: নিউজ.ইকম্বিনেটর.com
গিলডেনস্টন

0

আমি বৈশিষ্ট্য শাখায় আছি এবং রিফ্যাক্টরিংস তৈরি করেছি। আমি এখন মাস্টার পরিবর্তনগুলি আমার বৈশিষ্ট্য শাখায় মার্জ করতে চাই। আমি অনেক পিছনে আছি দ্রষ্টব্য আমি আমার স্থানীয়টিতে মাস্টার পরিবর্তনগুলি টানতে চাই না কারণ আমার বৈশিষ্ট্য শাখার মডিউলগুলি এক জায়গা থেকে অন্য জায়গায় চলে গেছে। আমি পেয়েছি নীচে টান ছাড়া পারফর্ম করা কাজ করে না। এটি "ইতিমধ্যে আপ টু ডেট" বলে says

 //below does not get the latest from remote master to my local feature branch without git pull
    git checkout master 
    git fetch 
    git checkout my-feature-branch 
    git merge master

এটি নীচে কাজ করে, নোট গিট মার্জ উত্স / মাস্টার ব্যবহার করুন:

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