গিট শাখাটি মাস্টারে রূপান্তর করার সর্বোত্তম (এবং নিরাপদ) উপায় কী?


2100

এর থেকে একটি নতুন শাখা masterতৈরি করা হয়েছে, আমরা এটি কল করি test

এমন বেশ কয়েকটি বিকাশকারী আছেন যা হয় হয় প্রতিশ্রুতিবদ্ধ masterবা অন্যান্য শাখা তৈরি করে এবং পরে মার্জ করে master

ধরা যাক কাজটি testকয়েক দিন সময় নিচ্ছে এবং আপনি testঅভ্যন্তরীণ প্রতিশ্রুতি দিয়ে ক্রমাগত আপডেট রাখতে চান master

আমি git pull origin masterথেকে করতে হবে test

প্রশ্ন 1: এটি কি সঠিক পদ্ধতির? অন্যান্য বিকাশকারীরা বিটিডব্লিউয়ের মতো একই ফাইলগুলিতে সহজেই কাজ করতে পারতেন।


আমার কাজ testশেষ হয়েছে এবং আমি এটিতে আবার একত্রিত করতে প্রস্তুত master। আমি ভাবতে পারি যে দুটি উপায়:

উত্তর:

git checkout test
git pull origin master
git push origin test
git checkout master
git pull origin test 

খ:

git checkout test
git pull origin master
git checkout master
git merge test

আমি ব্যবহার করছি না --rebaseকারণ আমার বোঝাপড়া থেকে, রিবেস থেকে পরিবর্তনগুলি আসবে masterএবং তার উপরে আমার স্ট্যাক করুন সুতরাং এটি অন্যান্য ব্যক্তিদের করা পরিবর্তনগুলি ওভাররাইট করতে পারে।

প্রশ্ন 2: এই দুটি পদ্ধতির মধ্যে কোনটি সঠিক? সেখানে পার্থক্য কী?

এই সমস্তটির লক্ষ্য হ'ল আমার testশাখায় ঘটে যাওয়া জিনিসগুলির সাথে আপডেট রাখা masterএবং পরে masterসময়কে যথাসম্ভব রৈখিক রাখার প্রত্যাশায় আমি তাদের আবার ফিরিয়ে দিতে পারি ।


18
না .. রিবেস কখনই ওভাররাইট করে না, এটি কেবল একটি ক্লিনার ইতিহাস অর্জনের চেষ্টা করছে। মাস্টার দেরী পয়েন্টে ইতিহাস পুনরায় সংযুক্ত (বা জাল)
জুনচেন লিউ

7
রিবাজ আপনার কমিটগুলি ওভাররাইট করে না। এটি আপনার প্রতিশ্রুতিগুলি পূর্বাবস্থায় ফিরে আসে, মাস্টার শাখায় করা কমিটগুলি আপনার পরীক্ষার শাখায় প্রয়োগ করে এবং তারপরে আপনার কমিটগুলি পরীক্ষায় ফিরে প্রয়োগ করে।
zundi

উত্তর:


2991

আমি এই কিভাবে করব

git checkout master
git pull origin master
git merge test
git push origin master

আমার যদি কোনও দূরবর্তী শাখা থেকে স্থানীয় শাখা থাকে তবে আমি এই শাখাটি রিমোটের সাথে মিশ্রিত করতে স্বাচ্ছন্দ্য বোধ করি না। এছাড়াও আমি আমার পরিবর্তনগুলিতে চাপ দেবো না, যতক্ষণ না আমি যা চাপতে চাই তাতে খুশি এবং আমি কিছুতেই চাপ দেই না, এটি কেবল আমার এবং আমার স্থানীয় সংগ্রহস্থলের জন্য। আপনার বিবরণে মনে হয়, এটি testকেবল আপনার জন্য? সুতরাং এটি প্রকাশ করার কোনও কারণ নেই।

গিট সর্বদা আপনার এবং অন্যের পরিবর্তনকে সম্মান করার চেষ্টা করে এবং তাই হবে --rebase। আমি মনে করি না যে আমি এটি যথাযথভাবে ব্যাখ্যা করতে পারি, তাই গিট বইটি দেখুন - রিবেসিং বা গিট-রেডি: সামান্য বর্ণনার জন্য রিব্যাসিংয়ের ভূমিকা । এটি বেশ দুর্দান্ত বৈশিষ্ট্য


2
git merge testআমাকে দেয় fatal: 'test' does not point to a commit। আমাকে git logপরীক্ষা শাখায় কমিট পয়েন্ট সন্ধান করতে হবে, তারপর মাস্টার শাখায় ফিরে যেতে হবে git merge 0f37d3154abbf52a4cbbbb5109f08af6a7567234
ডানকান্মু

17
@ ডানকানমু ওয়েল, অবশ্যই শাখাটি testঅবশ্যই থাকবে। অবশ্যই, আপনি পরিবর্তে কমিট হ্যাশ ব্যবহার করতে পারেন তবে শাখার নামটি ব্যবহার করা সহজ easier অভ্যন্তরীণভাবে এটি কেবল HEADশাখার হ্যাশ পুনরুদ্ধার করে ।
কিংক্রাঞ্চ

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

7
"আপনার বর্ণনায় মনে হচ্ছে, সেই পরীক্ষাটি কেবল আপনার জন্য? তাই এটি প্রকাশের কোনও কারণ নেই।" আপনি যদি নিজের স্থানীয় শাখাটিকে কোনও সার্ভারের দিকে ঠেলে দিতে চান তবে, উদাহরণস্বরূপ, যদি সেই সার্ভার আপনার স্থানীয় ড্রাইভ ব্যর্থ হওয়ার বিরুদ্ধে ব্যাকআপ সরবরাহ করে বা আপনার যদি ব্যাকআপ করার কোনও উপায় না থাকে।
এরিক

5
"... এছাড়াও আমি আমার পরিবর্তনগুলিতে চাপ দেবো না, যতক্ষণ না আমি যা চাপতে চাই তাতে সন্তুষ্ট না ..." আপনার স্থানীয় মেশিনগুলি মারা যায় এবং প্রচেষ্টার দিনগুলিতে আপনার কোডটির ব্যাক আপ রাখার জন্য কেন চাপ দিচ্ছেন না? চলে গেছে?
সমৃদ্ধ প্রস্তর

399

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

মত

git checkout master
git pull origin master
git merge test
git push origin master

এই পদ্ধতির দুটি বিষয় রয়েছে :

  1. এটি অনিরাপদ, কারণ পরীক্ষা শাখা এবং মাস্টার শাখার মধ্যে কোনও বিরোধ আছে কিনা তা আমরা জানি না।

  2. এটি মাস্টারকে একীভূত করার জন্য সমস্ত পরীক্ষার প্রতিশ্রুতি "সঙ্কুচিত" করবে; এটি মাস্টার শাখায় বলতে হয়, আমরা পরীক্ষা শাখার সমস্ত পরিবর্তিত লগ দেখতে পারি না।

সুতরাং, যখন আমরা সন্দেহ করি যে এখানে কিছু বিবাদ রয়েছে, তখন আমরা নিম্নলিখিত গিট অপারেশন করতে পারি:

git checkout test
git pull 
git checkout master
git pull
git merge --no-ff --no-commit test

mergeআগে পরীক্ষা করুন commit, এর মাধ্যমে দ্রুত-ফরওয়ার্ড কমিটিকে এড়িয়ে চলুন --no-ff,

যদি দ্বন্দ্বের মুখোমুখি হয়, তবে আমরা git statusদ্বন্দ্বগুলি সম্পর্কে বিশদটি পরীক্ষা করতে এবং সমাধান করার চেষ্টা করতে পারি

git status

একবার আমরা বিরোধগুলি সমাধান করি, বা যদি কোনও বিরোধ না হয়, আমরা commitএবং pushসেগুলি

git commit -m 'merge test branch'
git push

তবে এইভাবে পরীক্ষার শাখায় লগ ইন করা পরিবর্তনের ইতিহাস হারাবে এবং অন্যান্য বিকাশকারীদের প্রকল্পের ইতিহাস বোঝার পক্ষে এটি মাস্টার ব্রাঞ্চকে শক্ত করে তুলবে।

সুতরাং সর্বোত্তম পদ্ধতিটি হ'ল rebaseপরিবর্তে আমাদের ব্যবহার করতে হবে merge(ধরুন, যখন এই সময়ে আমরা শাখা বিরোধগুলি সমাধান করেছি)।

অনুসরণ করছে এক সহজ নমুনা, উন্নত অপারেশনের জন্য, দয়া করে পড়ুন http://git-scm.com/book/en/v2/Git-Branching-Rebasing

git checkout master
git pull
git checkout test
git pull
git rebase -i master
git checkout master
git merge test

হ্যাঁ, যখন আপনি বড় হয়ে গেছেন, সমস্ত টেস্ট শাখার কমিটগুলি মাস্টার ব্রাঞ্চের মাথার দিকে চলে যাবে। রিবেসিংয়ের প্রধান সুবিধা হ'ল আপনি লিনিয়ার এবং অনেক ক্লিনার প্রকল্পের ইতিহাস পান।

আপনার কেবলমাত্র এড়ানো উচিত: হ'ল rebaseমাস্টার ব্রাঞ্চের মতো সর্বজনীন শাখায় কখনও ব্যবহার করবেন না ।

নিম্নলিখিতগুলির মতো কখনও অপারেশন করবেন না :

git checkout master
git rebase -i test

Https://www.atlassian.com/git/tutorials/merging-vs-rebasing/the-golden-rule-of-rebasing এর জন্য বিশদ

পরিশিষ্ট:

  • আপনি যদি রিবিসিং অপারেশন সম্পর্কে নিশ্চিত না হন তবে দয়া করে এখানে উল্লেখ করুন: https://git-scm.com/book/en/v2/Git-Branching- রিবেসিং

4
আমি সম্মত হই যে পরে মাস্টারগুলিতে মার্জ হওয়ার জন্য পরীক্ষা শাখাটি ছাড় দেওয়া the এমনকি অন্যান্য উত্তরগুলিও সঠিক, এটি মাস্টারের মাথায় শাখা পরীক্ষার পরিবর্তনের ইতিহাস বজায় রাখবে কারণ "আপনি একটি লাইনার এবং অনেক ক্লিনার প্রকল্প পান" যা উল্লেখ করে যে সংস্করণ নিয়ন্ত্রণ ব্যবস্থা of
le0diaz

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

4
@ পোলওয়ানলিউউইনের সাথে একমত, যখন আপনি পরীক্ষার শাখাকে মাস্টার হিসাবে মার্জ করবেন, তখন আপনাকে দ্বন্দ্ব সম্পর্কে অবহিত করা হবে এবং আপনি যেখানে পদক্ষেপ নেবেন এবং পরিবর্তনগুলি মার্জ করবেন সে সম্পর্কে আপনাকে জানানো হবে। আপনার কাজ শেষ হয়ে গেলে, আপনি একীভূত হয়ে প্রতিশ্রুতিবদ্ধ এবং ফিরে ধাক্কা দেবেন। আপনি যদি অনুশোচনা বা ক্যান্সার এটি সঠিকভাবে মার্জ করা মনে হয়, আপনি সর্বদা আপনার কাজ ফেলে দিতে পারেন এবং আবার মাস্টার থেকে টানতে পারেন। সুতরাং এটি অবশ্যই অনিরাপদ নয় ..
হুয়ান

3
রিবেসে -আই কেন?
মুশিপিস

8
রিবেজিং মার্জ হওয়ার চেয়ে অন্তর্নিহিত আরও বেশি সুরক্ষিত। মার্জিকে আরও নিরাপদ বিকল্প হিসাবে রিবেসিংয়ের প্রস্তাব দেওয়া ভুল। রিবেসিং একটি বৈধ কৌশল, তবে ব্যবহারকারীর থেকে সাবধান হওয়া উচিত এমন আরও বেশি সতর্কতা নিয়ে আসে।
ইক্কে

90

কোনও রিবেস বা মার্জ উভয়েরই পরিবর্তনকে ওভাররাইট করা উচিত নয় (যদি না আপনি কোনও বিরোধের সমাধানের সময় এটি করতে পছন্দ করেন)।

বিকাশের সময় স্বাভাবিক পদ্ধতির হয়

git checkout master
git pull
git checkout test
git log master.. # if you're curious
git merge origin/test # to update your local test from the fetch in the pull earlier

আপনি যখন আবার মাস্টারের সাথে একীভূত হতে প্রস্তুত হন,

git checkout master
git log ..test # if you're curious
git merge test
git push

যদি আপনি মার্জটিতে কিছু ভাঙ্গার বিষয়ে উদ্বিগ্ন হন তবে git merge --abortতা আপনার জন্য রয়েছে।

মার্জ করার উপায় হিসাবে পুশ এবং তারপরে টান ব্যবহার করা নিরীহ। আমি কেন নিশ্চিত নই আপনি কেন পরীক্ষার উত্স দিকে এগিয়ে যাচ্ছেন।


1
এই প্রক্রিয়াটি কমিটের সংখ্যা বাড়িয়ে তুলবে, প্রতিবার যখন আপনি শাখাগুলির মধ্যে স্যুইচ করবেন, আপনাকে আপনার শাখাটি করতে হবে।
iBug

2
কি? আপনি কি বলছেন যে প্রতিবার শাখাগুলি স্যুইচ করলে তা কমিটের সংখ্যা বাড়বে? বা আপনি কি বলছেন যে প্রতিবার আপনি শাখাগুলি স্যুইচ করবেন, আপনাকে "আপনার শাখাটি প্রতিশ্রুতিবদ্ধ" করতে হবে? প্রথমটি অসত্য এবং আমি দ্বিতীয়টির অর্থ কী তা নিশ্চিত।
রায়লু

চেকআউট করার আগে, আপনাকে শাখা করতে হবে। আমি এটাই বলছি
iBug

11
আপনি করবেন না: এটি (জিনিসগুলির মধ্যে একটি) git stashএর জন্য।
মিসানফোর্ড

1
অথবা আপনি আপনার শেষ প্রতিশ্রুতি (স্থানীয় শাখায়) প্রশংসা করতে পারেন এবং চাপ দেওয়ার আগে এটিকে নিখুঁত করতে পারেন।
whihathac

42

আমি প্রথমে তৈরি হওয়া-সংযুক্ত শাখাটি যতটা সম্ভব পরিষ্কার করে তুলব। আপনার পরীক্ষা চালান, নিশ্চিত করুন যে অবস্থাটি আপনি চান তেমনই। গিট স্কোয়াশের মাধ্যমে নতুন কমিটগুলি পরিষ্কার করুন ।

কিং ক্রাঞ্চগুলি উত্তর ছাড়াও , আমি ব্যবহার করার পরামর্শ দিই

git checkout master
git pull origin master
git merge --squash test
git commit
git push origin master

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

সম্পাদনা: আপনি আগ্রহী হতে পারে

গিটহাবের জন্য তাই আমি একটি বৈশিষ্ট্য শাখার জন্য নিম্নলিখিতগুলি শেষ করছি mybranch:

উত্স থেকে সর্বশেষতম পান

$ git checkout master
$ git pull origin master

মার্জ বেস হ্যাশটি সন্ধান করুন:

$ git merge-base mybranch master
c193ea5e11f5699ae1f58b5b7029d1097395196f

$ git checkout mybranch
$ git rebase -i c193ea5e11f5699ae1f58b5b7029d1097395196f

এখন নিশ্চিত হন যে কেবল প্রথমটি রয়েছে pick, বাকিটি হ'ল s:

pick 00f1e76 Add first draft of the Pflichtenheft
s d1c84b6 Update to two class problem
s 7486cd8 Explain steps better

এরপরে একটি খুব ভাল প্রতিশ্রুতি বার্তা চয়ন করুন এবং গিটহাবটিতে চাপ দিন। তারপরে টানার অনুরোধ করুন।

টান অনুরোধটি মার্জ হওয়ার পরে, আপনি স্থানীয়ভাবে এটি মুছতে পারেন:

$ git branch -d mybranch

এবং গিটহাবে

$ git push origin :mybranch

" যা মাস্টার শাখায় কেবল একটি প্রতিশ্রুতিবদ্ধ হওয়া উচিত ", এটি অগত্যা নয়; আপনি ইতিহাস বজায় রাখতে আগ্রহী হতে পারেন
কোকোওয়ালা

অবশ্যই। তবে কেবল
কমিটসকে

আমি মনে করি - প্রথম-পিতামাতার সেরা সমাধান বলে মনে হচ্ছে। ডেভিডচুডজিকি.com
first-

7

প্রাচীন থ্রেড, কিন্তু আমি খুঁজে পেলাম না আমার পথ এরকম। রিবাজে কাজ করে এমন কারও পক্ষে এটি মূল্যবান হতে পারে এবং মাস্টার শীর্ষে একটি (বৈশিষ্ট্য) শাখা থেকে সমস্ত কমিটগুলি মার্জ করতে চায়। পথে যদি কোনও বিরোধ হয় তবে আপনি প্রতিশ্রুতিবদ্ধতার জন্য সেগুলি সমাধান করতে পারেন। প্রক্রিয়া চলাকালীন আপনি সম্পূর্ণ নিয়ন্ত্রণ রাখুন এবং যে কোনও সময় বাতিল করতে পারেন।

মাস্টার এবং শাখা আপ-টু-ডেট পান:

git checkout master
git pull --rebase origin master
git checkout <branch_name>
git pull --rebase origin <branch_name>

মাস্টারের শীর্ষে শাখা মার্জ করুন:

git checkout <branch_name>
git rebase master

Alচ্ছিক: আপনি যদি রিবেসের সময় সংঘাতের মধ্যে চলে যান:

প্রথমে ফাইলে বিরোধের সমাধান করুন। তারপর:

git add .
git rebase --continue

আপনার রিবেসড শাখাটি পুশ করুন:

git push origin <branch_name>

এখন আপনার কাছে দুটি বিকল্প রয়েছে:

  • ক) জনসংযোগ তৈরি করুন (যেমন গিটহাবের উপরে) এবং এটি ইউআইয়ের মাধ্যমে সেখানে মার্জ করুন
  • খ) কমান্ড লাইনে ফিরে যান এবং শাখাটি মাস্টারে মার্জ করুন
git checkout master
git merge --no-ff <branch_name>
git push origin master

সম্পন্ন.


6

এটি আমার কর্মক্ষেত্রে দলের সাথে কাজ করার প্রবাহটি। আপনি বর্ণিত হিসাবে দৃশ্যটি হয়। প্রথমত, আমি যখন আমি শাখায় testকাজ করছি তখন মাস্টারকে যা যা যোগ করা হয়েছিল তা টানতে আমি মাস্টারকে রিবেস করতে কাজ করি test

git pull -r upstream master

আপনি testশাখাটি কাঁটাচামচ করিয়েছেন এবং সেগুলি প্রয়োগ করার পরে এটি মাস্টারগুলিতে পরিবর্তনগুলি টানবে এবং তারপরে আপনার বর্তমানের মাস্টারটির "শীর্ষে" পরীক্ষা করার জন্য পরিবর্তনগুলি প্রয়োগ করবে। এখানে বিরোধ থাকতে পারে, যদি অন্য ব্যক্তিরা পরীক্ষায় সম্পাদনা করা একই ফাইলগুলিতে পরিবর্তন করে থাকে। যদি সেখানে থাকে তবে আপনাকে সেগুলি ম্যানুয়ালি ঠিক করতে হবে এবং প্রতিশ্রুতিবদ্ধ হবে। একবার এটি হয়ে গেলে, আপনি মাস্টার শাখায় স্যুইচ করা ভাল এবং testকোনও সমস্যা না করেই মেশানো ভাল ।


3
git checkout master
git pull origin master
# Merge branch test into master
git merge test

মার্জ করার পরে, যদি ফাইলটি পরিবর্তন করা হয়, তবে আপনি যখন মার্জ করবেন তখন এটি "সংঘাতের সমাধান করুন" এর ত্রুটির মধ্য দিয়ে যাবে

তারপরে আপনাকে প্রথমে আপনার সমস্ত বিবাদগুলি সমাধান করার দরকার পরে আপনাকে আবার আপনার সমস্ত পরিবর্তন করতে হবে এবং তারপরে চাপ দিতে হবে

git push origin master

পরীক্ষার শাখায় পরিবর্তনগুলি কে করেছে, এটি আরও ভাল, কারণ তিনি জানেন যে তিনি কী পরিবর্তন করেছেন।


3

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

সুতরাং, এমনকি পরীক্ষা না করেও masterআমি চাই:

git fetch origin
git rebase -i origin/master
# ...solve possible conflicts here

অবশ্যই, কেবল উত্স থেকে আনতে আপনার স্থানীয় রাষ্ট্রকে রিফ্রেশ করে না master(কারণ এটি কোনও সংশ্লেষ সম্পাদন করে না), তবে এটি আমাদের উদ্দেশ্যটির জন্য পুরোপুরি ঠিক আছে - আমরা সময় সাশ্রয়ের জন্য, চারদিকে স্যুইচিং এড়াতে চাই।


2

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

git checkout test
git pull
git checkout master
git pull origin master
git merge test
git push origin master

0

আপনাকে টানতে শাখাটি পরীক্ষা করে দেখতে হবে, যেহেতু টানার অর্থ মাস্টারে মার্জ হওয়া এবং আপনার একত্রীকরণের জন্য একটি কাজের গাছ প্রয়োজন need

git checkout master
git pull

প্রথমে চেক আউট করার দরকার নেই; রিবাজে দুটি আর্গুমেন্ট দিয়ে সঠিক কাজ করে

git rebase master test  

git checkout master
git merge test

ডিফল্টরূপে গিট পুশ এখানে এবং রিমোটে বিদ্যমান সমস্ত শাখাকে পুশ করে

git push
git checkout test

0

শিরোনামটি "সেরা উপায়" হিসাবে বলেছি বলে আমি মনে করি ধৈর্য একীকরণের কৌশলটি বিবেচনা করা ভাল ধারণা ।

থেকে: https://git-scm.com/docs/ विसর- স্ট্রেজিটিস

এই বিকল্পের সাহায্যে 'মার্জ-রিকার্সিভ' কখনও কখনও অযৌক্তিক মিলের লাইনের কারণে উদ্ভূত হওয়া (যেমন, স্বতন্ত্র ফাংশনগুলির ধনুর্বন্ধনী) এড়াতে ডুবে যাওয়া এড়াতে কিছুটা অতিরিক্ত সময় ব্যয় করে। যখন শাখাগুলি একীভূত করতে বন্যভাবে বিভক্ত হয়ে যায় তখন এটি ব্যবহার করুন। গিট-ডিফ [1] --patience এছাড়াও দেখুন।

ব্যবহার:

git fetch
git merge -s recursive -X patience origin/master

গিট এলিয়াস

আমি এর জন্য সর্বদা একটি উপনাম ব্যবহার করি, যেমন একবার চালান:

 git config --global alias.pmerge 'merge -s recursive -X patience'

এখন আপনি করতে পারেন:

git fetch
git pmerge origin/master

0

এটি গিটল্যাব থেকে এসেছে: কেবলমাত্র নির্দেশাবলী অনুসরণ করুন:

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


0

আমি বিকাশ এবং বৈশিষ্ট্যযুক্ত শাখাগুলি অনুসারে উত্তর দেব,

যদি আপনি বৈশিষ্ট্য শাখায় রয়েছেন এবং নীচের কমান্ডগুলি বিকাশের সাথে আপডেট করার প্রয়োজন রয়েছে: গিট চেকআউট বিকাশ গিট পুল গিট চেকআউট বৈশিষ্ট্য / এক্সওয়াইজ গিট মার্জ ডেভেলপ

এখন আপনার বৈশিষ্ট্যটি বিকাশের সাথে আপডেট হয়েছে আপনি নিজের পরিবর্তনগুলিকে ধাক্কা দিতে পারেন।

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