মধ্যে পার্থক্য কি git merge
এবং git rebase
?
মধ্যে পার্থক্য কি git merge
এবং git rebase
?
উত্তর:
মূলত ধরুন সেখানে 3 করে ছিল, A
, B
, C
:
তারপরে বিকাশকারী ড্যান কমিট D
তৈরি করেছে এবং বিকাশকারী এড কমিট তৈরি করেছেন E
:
স্পষ্টতই, এই বিরোধ কোনওভাবেই সমাধান করা উচিত। এর জন্য, 2 টি উপায় রয়েছে:
মার্জ :
উভয় করে D
এবং E
এখনও এখানে, কিন্তু আমরা একত্রীকরণ তৈরি কমিট M
উভয় থেকে উত্তরাধিকারী পরিবর্তন D
এবং E
। তবে এটি হীরা আকার তৈরি করে যা অনেক লোককে খুব বিভ্রান্ত মনে করে find
বাতিল :
আমরা প্রতিশ্রুতি তৈরি করি R
, যা প্রকৃত ফাইল সামগ্রীটি M
উপরের মার্জ কমিটের অনুরূপ । তবে, আমরা প্রতিশ্রুতি থেকে মুক্তি পেয়েছি E
, যেমন এর অস্তিত্ব কখনও নেই (বিন্দু দ্বারা চিহ্নিত - লাইন নষ্ট)। এই বিলুপ্তির কারণে, E
বিকাশকারী এডের স্থানীয় হওয়া উচিত এবং অন্য কোনও ভাণ্ডারে কখনও ঠেকানো উচিত হয়নি। পুনর্বাসনের সুবিধা হ'ল ডায়মন্ডের আকৃতি এড়ানো হয় এবং ইতিহাস দুর্দান্ত সরলরেখায় থাকে - বেশিরভাগ বিকাশকারীরা এটি পছন্দ করে!
git merge
ইন্টারলিভ কমিট করে না (তবে এটি দেখে তা প্রদর্শিত হতে পারে git log
)। পরিবর্তে git merge
ড্যান এবং এড উভয় বিকাশের ইতিহাস অক্ষত রাখে, কারণ এটি প্রতিটি দৃষ্টিকোণ থেকে একবারে দেখা গিয়েছিল। git rebase
এটিকে দেখে মনে হচ্ছে যে ড্যান এটিতে প্রথমে কাজ করেছিল এবং এড তাঁর অনুসরণ করেছিলেন। উভয় ক্ষেত্রে (একীভূত এবং পুনর্বাসনা), প্রকৃত ফলাফল ফাইল ট্রি একেবারে অভিন্ন।
গিট সম্পর্কে আমি যে 10 টি জিনিসকে ঘৃণা করি তা থেকে আমি সত্যিই এই অংশটি ভালবাসি (এটি দ্বিতীয় উদাহরণে পুনর্বাসনের জন্য একটি সংক্ষিপ্ত ব্যাখ্যা দেয়):
3. ক্রিপি ডকুমেন্টেশন
মানুষ পেজ "*** আপনি চ" এক সর্বশক্তিমান হয় 1 । তারা কোনও কম্পিউটার বিজ্ঞানীর দৃষ্টিকোণ থেকে আদেশগুলি বর্ণনা করে, কোনও ব্যবহারকারী নয়। বিন্দু ক্ষেত্রে:
git-push – Update remote refs along with associated objects
মানুষের জন্য এখানে বর্ণনা রয়েছে:
git-push – Upload changes from your local repository into a remote repository
আপডেট করুন, অন্য একটি উদাহরণ: (ধন্যবাদ সিজিডি)
git-rebase – Forward-port local commits to the updated upstream head
অনুবাদ:
git-rebase – Sequentially regenerate a series of commits so they can be applied directly to the head node
এবং তারপর আমাদের আছে
git-merge - Join two or more development histories together
যা একটি ভাল বর্ণনা।
1. মূলতে সেন্সর করা
ব্যক্তিগতভাবে আমি স্ট্যান্ডার্ড ডায়াগ্রামিং কৌশলটি খুব সহায়ক মনে করি না - তীরগুলি সর্বদা আমার জন্য ভুল উপায়ে দেখায় বলে মনে হয়। (তারা সাধারণত প্রতিটি প্রতিশ্রুতির "পিতামাতার" দিকে ইঙ্গিত করে, যা সময়মতো পিছনের দিকে শেষ হয় যা অদ্ভুত।
কথায় এটি ব্যাখ্যা করতে:
যে কারণে আমি বুঝতে পারি না, গিতের জন্য জিইউআই সরঞ্জামগুলি ব্যক্তিগত মার্জগুলিকে বিমূর্ত করে বিচ্ছিন্ন করে মার্জ হিস্ট্রিগুলিকে আরও পরিষ্কারভাবে উপস্থাপন করার জন্য কখনও চেষ্টা করে নি। সুতরাং আপনি যদি একটি "পরিষ্কার ইতিহাস" চান তবে আপনার পুনরায় ব্যবহারের প্রয়োজন use
আমি মনে করি মনে হয় এমন প্রোগ্রামারদের ব্লগ পোস্টগুলি পড়ে যারা কেবল রিবাজ ব্যবহার করে এবং অন্যরা কখনও রিবেস ব্যবহার করে না ।
আমি এটি একটি মাত্র-শব্দের উদাহরণ দিয়ে ব্যাখ্যা করার চেষ্টা করব। ধরা যাক আপনার প্রকল্পের অন্যান্য ব্যক্তিরা ইউজার ইন্টারফেসে কাজ করছেন এবং আপনি ডকুমেন্টেশন লিখছেন। পুনর্বাসনা ব্যতীত আপনার ইতিহাসটি দেখতে এর মতো দেখতে পারে:
Write tutorial
Merge remote-tracking branch 'origin/master' into fixdocs
Bigger buttons
Drop down list
Extend README
Merge remote-tracking branch 'origin/master' into fixdocs
Make window larger
Fix a mistake in howto.md
এটি হল আপনার ডকুমেন্টেশন কমিটের মাঝখানে মার্জ এবং ইউআই কমিট করে।
আপনি যদি নিজের কোডটি মার্জ করার পরিবর্তে মাস্টারের কাছে পুনরায় সাজিয়ে থাকেন তবে এটি দেখতে এটির মতো হবে:
Write tutorial
Extend README
Fix a mistake in howto.md
Bigger buttons
Drop down list
Make window larger
আপনার সমস্ত কমিট শীর্ষে রয়েছে (নতুন) এবং তারপরে বাকী master
শাখাটি রয়েছে।
( অস্বীকৃতি: আমি "গিট সম্পর্কে ঘৃণা করি" 10 টি পোস্টের লেখক যা অন্য একটি উত্তরে উল্লেখ করা হয়েছে )
যদিও গৃহীত এবং সর্বাধিক উত্তোলিত উত্তর দুর্দান্ত, তবে আমি কেবলমাত্র শব্দ দ্বারা পার্থক্যটি ব্যাখ্যা করার চেষ্টা করে দরকারী:
একত্রিত করা
রি-বেসের ফলে
সংক্ষিপ্তসার: সম্ভব হলে রিবেস প্রায় সবসময়ই ভাল is মূল শাখায় পুনরায় সংহত করা সহজ।
কারণ? Branch আপনার বৈশিষ্ট্যটির কাজটি প্রধান শাখার ক্ষেত্রে একটি বড় 'প্যাচ ফাইল' (ওরফে ডিফ) হিসাবে উপস্থাপিত হতে পারে , একাধিক পিতামাতাকে 'ব্যাখ্যা' করতে হবে না: কমপক্ষে দু'জন, একত্রীকরণ থেকে আগত, তবে সম্ভবত আরও অনেক কিছু যদি সেখানে থাকে বেশ কয়েকটি মার্জ ছিল। একত্রীকরণের বিপরীতে, একাধিক রিবাসগুলি যোগ হয় না। (আরও একটি বড় প্লাস)
গিট রিবেস একীকরণের কাছাকাছি। রিবেসে পার্থক্য হ'ল:
সুতরাং এর অর্থ এই যে আপনার সমস্ত স্থানীয় কমিটগুলি দূরবর্তী সমস্ত কমিটের পরেও শেষের দিকে চলে যায়। আপনার যদি একত্রীকরণের বিরোধ হয় তবে আপনাকেও এটি সমাধান করতে হবে।
আমি গিট রিবেস বনাম মার্জ সম্পর্কিত একটি আকর্ষণীয় নিবন্ধ পেয়েছি , এটি এখানে ভাগ করে নেওয়ার চিন্তাভাবনা করেছি