কিভাবে গিট শাখা মাস্টারের সাথে সিঙ্কে রাখবেন


275

এই মুহুর্তে গিট আমার মাথাটি নিচ্ছে, আমি নিম্নলিখিতগুলির জন্য সেরা সমাধানটি নিয়ে আসতে পারি না।

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

দয়া করে অনুরূপ ওয়ার্কফ্লোগুলির একটি উদাহরণ অন্য লোকেরা ব্যবহার করেন বা আমাকে জানান কেবল এই ধারণাটি বোকা এবং আমার অন্যান্য বিকল্পগুলি বিবেচনা করা উচিত। এই মুহুর্তে কর্মপ্রবাহটি দুর্দান্ত বলে মনে হচ্ছে তবে আমি কীভাবে এইভাবে গিট কাজ করতে পারি তা আমি জানি না।

ধন্যবাদ, সমস্ত প্রশংসা সাহায্য।

আপডেট 1: আমি যদি মাস্টারকে মোবাইল ডিভাইসসপোর্টে এবং মোবাইল ডিভাইস সমর্থনকে মাস্টার হিসাবে একীভূত করতে পারি তবে আমি কি উভয় শাখায় অনুলিপি করা কমিটগুলি পেতে পারি? বা গিটটি যথেষ্ট দক্ষ হয়ে উঠেছে যে আমি শাখা এ থেকে শাখা বিতে সর্বশেষ পরিবর্তনগুলি টেনে এনে শাখা বিতে মার্জ কমিট সি যুক্ত করেছি এবং আমি শাখা বি থেকে সাম্প্রতিক পরিবর্তনগুলি টেনে শাখায় পরিণত করেছি এবং শাখায় ডি মার্জ কমেছি একজন?

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

master
A--B--C-----H--I--J--M--N
       \   /    \
mobile  \ /      \
D--E--F--G--------K--L

1
আপনি যদি আমার মতো হয়ে থাকেন তবে এটি কীভাবে গিটহাব ক্লায়েন্টের সাথে করবেন তা সন্ধান করছেন : help.github.com/articles/merging- शाखा
cregox

1
এই প্রশ্নটি বহু শতাব্দী ধরে আমার জীবন বাঁচিয়েছিল; এই দুর্দান্ত প্রশ্নটি @ মিঃ সেট করার জন্য সময় দেওয়ার দুর্দান্ত প্রচেষ্টার জন্য ধন্যবাদ। EZEKIEL
DJphy

আপনি যদি কাঁটাচামচায় কাজ করছেন, আপনাকে help.github.com/articles/syncing-a-fork
koppor

উত্তর:


416

হ্যাঁ ঠিক আছে

git checkout master
git pull
git checkout mobiledevicesupport
git merge master

মোবাইল ডিভাইস সমর্থন মাস্টারের সাথে সিঙ্কে রাখার জন্য

তারপরে আপনি যখন মোবাইল ডিভাইস সমর্থনকে মাস্টারে রাখার জন্য প্রস্তুত হবেন, প্রথমে উপরের মতো মাস্টারে মার্জ করুন, তারপরে ...

git checkout master
git merge mobiledevicesupport
git push origin master

এবং এটাই.

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


এটি আমার কাছে যুক্তিসঙ্গত বলে মনে হয়, আমি অনুমান করি যে এটি কমিটিকে ইতিহাসকে কী নোংরা করে তুলবে তা আমি নিশ্চিত নই, আমি কী ঘটবে বলে মনে করি তার একটি উদাহরণ দিয়ে আমার প্রশ্নটি আপডেট করব।
মিঃ ইজকিয়েল

1
আপনার শাখাগুলির মধ্যে পার্থক্য নিরসন করার জন্য প্রয়োজনীয়ভাবে গিট লাগবে বেশ কয়েকটি "মার্জ কমিটস"। আপনি যদি সে সম্পর্কে উদ্বিগ্ন থাকেন এবং আপনি কেবল শাখা ব্যবহার করেন তবে "গিট মার্জ মাস্টার" এর পরিবর্তে "গিট রিবেস মাস্টার" করুন এবং রিমোট শাখায় কমিটিকে চাপ দেবেন না। আপনি যদি নিজেকে আবিষ্কার করতে যাচ্ছেন যে আপনি প্রচুর জোর ধাক্কা দিচ্ছেন (গিট পুশ - ফোর্স) উত্স / মোবাইল ডিভাইস সমর্থন করুন কারণ আপনি যাচ্ছেন (সম্ভবত) সর্বদা এটি প্রেরণ করা যা কোনও কিছুর সাথে মিলে না comm প্রত্যন্ত শাখা আছে। আরও বিশদ এখানে git-scm.com/book/en/Git-Branching- রিবেসিং
ধারণা 47

আমি বিশ্বাস করি এটিই সঠিক উত্তর, এটি আমার কাছে যা চাই ঠিক তা মনে হচ্ছে। আমি এটিকে আরও স্পষ্ট করার জন্য উপরের চিত্রটি যুক্ত করেছি তবে আপনি যা বলছেন তা যদি সত্য হয় তবে আমি কীভাবে চাই তা ঠিক এইভাবে কাজ করা উচিত। ধন্যবাদ.
মিঃ ইজকিয়েল

2
কেন এটি বিশেষত ভাল পরামর্শ নয় তা বোঝার জন্য এটি পড়ুন: kentnguyen.com/de વિકાસment / visualized-git-practices-for-team/… । এটি গিট রক্ষণকারী লিখেছিলেন, সুতরাং সম্ভবত এই কথা বলা ঠিক যে এই বিশেষ বিষয়ে তিনি কী কথা বলছেন তা তিনি জানেন।
ড্যান মোল্ডিং

2
এটি প্রতিশ্রুতিবদ্ধ ইতিহাস অগোছালো পান, আমার উত্তরটি রিবেসের মাধ্যমে এটি দেখুন।
গুব00st

43

আপনি যখনই মাস্টার থেকে আপনার কার্য শাখায় পরিবর্তন পেতে চান, একটি করুন git rebase <remote>/master। যদি কোনও দ্বন্দ্ব থাকে। তাদের সমাধান করুন।

আপনার কাজের শাখা প্রস্তুত হয়ে গেলে পুনরায় রিবেস করুন এবং তারপরে করুন git push <remote> HEAD:master। এটি দূরবর্তী (কেন্দ্রীয় রেপো) এ মাস্টার শাখা আপডেট করবে।


3
গৃহীত উত্তরের পরিবর্তে এইভাবে এটি করার পক্ষে কী কী উপকার / ধারণা আছে?
হাম্পাস আহলগ্রেন

33
স্নেহ না হওয়া পর্যন্ত আপনি 5 ঘন্টা
রিবেসে

21
এটি কেবল তখনই সত্য যখন আপনার শাখাটি কোনও ব্যক্তিগত সংগ্রহস্থলে থাকে। উপরের দিকে ধাক্কা দেওয়া হয়েছে এমন কোনও কিছুর পুনর্বাসনা করবেন না। এ কারণেই: git-scm.com/book/en/v2/…
ক্লাইগ

3
ইতিহাসের পুনর্লিখন হিসাবে রিবেসিংয়ের সমস্যাটি হ'ল রিবেসড কমিটের এসএইচএগুলি পরিবর্তন করা হয়েছে এবং সুতরাং আপনি (যেমন) আউটপুটটির উপর নির্ভর করতে পারবেন না git branch --contains <commit>
jnns

13

ধারণা 47 এর পদ্ধতির এটি করার সঠিক উপায়, তবে আমি আপনার প্রতিশ্রুতিবদ্ধ ইতিহাসটি পরিষ্কার রাখার জন্য --no-ff বিকল্পের সাথে একীভূত হওয়ার পরামর্শ দেব।

git checkout develop
git pull --rebase
git checkout NewFeatureBranch
git merge --no-ff master

9

হ্যাঁ আমি আপনার পদ্ধতির সাথে একমত মোবাইল ডিভাইস সমর্থনকে মাস্টারে মার্জ করতে আপনি ব্যবহার করতে পারেন

git checkout master
git pull origin master //Get all latest commits of master branch
git merge mobiledevicesupport

একইভাবে আপনি মোবাইল ডিভাইসসপোর্টেও মাস্টারকে মার্জ করতে পারেন।

প্র: ক্রস মার্জ করা যদি কোনও সমস্যা হয় বা না হয়।

উ: ঠিক আছে এটি মোবাইল * শাখা এবং মাস্টার শাখায় করা সিমেট হওয়ার শেষ সময় থেকে তার উপর নির্ভর করে। এই উদাহরণটি ধরুন: শেষ সিঙ্কের পরে, এই শাখাগুলিতে নিম্নলিখিত কমিটগুলি ঘটে

Master branch: A -> B -> C [where A,B,C are commits]
Mobile branch: D -> E

এখন, ধরুন কমিট বি a.txt ফাইল করার জন্য কিছু পরিবর্তন করেছে এবং কমিট ডিও a.txt এ কিছু পরিবর্তন করেছে। আসুন এখন একত্রীকরণের প্রতিটি ক্রিয়াকলাপের প্রভাবের উপর নজর দেওয়া যাক,

git checkout master //Switches to master branch
git pull // Get the commits you don't have. May be your fellow workers have made them.
git merge mobiledevicesupport // It will try to add D and E in master branch.

এখন, দুটি ধরণের মার্জ হওয়া সম্ভব

  1. দ্রুত ফরোয়ার্ড মার্জ
  2. সত্য মার্জ (ম্যানুয়াল প্রচেষ্টা প্রয়োজন)

গিট প্রথমে এফএফকে একীভূত করার চেষ্টা করবে এবং যদি এটি খুঁজে পায় কোনও বিবাদ গিট দ্বারা সমাধান করা যায় না। এটি মার্জকে ব্যর্থ করে এবং আপনাকে মার্জ করতে বলে। এই ক্ষেত্রে, একটি নতুন প্রতিশ্রুতি ঘটবে যা a.txt এ বিরোধ নিষ্পত্তি করার জন্য দায়ী।

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


1
তাহলে ক্রস মার্জ করা এই জাতীয় সমস্যা নয়?
মিঃ ইজকিয়েল

ক্রস মার্জিং যা আমরা সিঙ্কিং বলি এবং এটি কোনও সমস্যা নয় যদি না উভয় শাখায় অঙ্গীকারবদ্ধতা কোনও দ্বন্দ্ব সৃষ্টি না করে। আমার আপডেট করা উত্তর দেখুন দয়া করে।
sachinjain024

3

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

git fetchআপনার বৈশিষ্ট্য শাখা থেকে 1 (নিশ্চিত হয়ে নিন যে আপনি যে বৈশিষ্ট্যটির শাখাটিতে কাজ করছেন তা আপডেট হয়েছে)

2 git rebase origin/develop

3 যদি কোনও বিরোধ দেখা দেয় তবে একে একে সমাধান করুন

git rebase --continueসমস্ত দ্বন্দ্ব মোকাবেলায় একবার 4 ব্যবহার করুন

5 git push --force


1
এটি উভয়ই পড়া শক্ত এবং বোঝা শক্ত। আদেশগুলি থেকে আপনার মন্তব্য পৃথক করতে দয়া করে আপনার উত্তর আপডেট করুন এবং সঠিক কোড মার্কডাউন ব্যবহার করুন।
not2qubit

2

আপনি সঠিক দিকে চিন্তা করছেন। অবিচ্ছিন্নভাবে মোবাইল ডিভাইস সমর্থন সহ মাস্টারকে মার্জ করুন এবং মোবাইল ডিভাইসসপোর্ট স্থিতিশীল থাকাকালীন মোবাইল ডিভাইস সমর্থনকে মাস্টারের সাথে একীভূত করুন। প্রতিটি বিকাশকারীর নিজস্ব শাখা থাকবে এবং তারা তাদের ভূমিকার উপর নির্ভর করে মাস্টার বা মোবাইল ডিভাইস সমর্থনগুলিতে এবং এর সাথে মার্জ করতে পারে।

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