এটি প্রায়শই বলা হয়ে থাকে যে, আপনি যে প্রতিশ্রুতিগুলি ইতিমধ্যে ঠেলে দিয়েছেন সেগুলি আপনি পুনরায় করা উচিত নয়। এর অর্থ কী হতে পারে?
এটি প্রায়শই বলা হয়ে থাকে যে, আপনি যে প্রতিশ্রুতিগুলি ইতিমধ্যে ঠেলে দিয়েছেন সেগুলি আপনি পুনরায় করা উচিত নয়। এর অর্থ কী হতে পারে?
উত্তর:
ProGit বই টি ভাল ব্যাখ্যা ।
আপনার প্রশ্নের সুনির্দিষ্ট উত্তর " রিবসিংয়ের বিপদ " শিরোনামে বিভাগে পাওয়া যাবে । বিভাগ থেকে একটি উদ্ধৃতি:
আপনি স্টাফ রিবেস করার সময়, আপনি বিদ্যমান প্রতিশ্রুতিগুলি ত্যাগ এবং একইরকম তবে ভিন্ন ভিন্ন নতুন তৈরি করছেন। আপনি যদি অন্য কোথাও প্রতিশ্রুতিবদ্ধ হন এবং অন্যরা সেগুলি নীচে টানেন এবং তাদের উপর ভিত্তি করে কাজ করেন এবং তারপরে আপনি সেই কমিটগুলিকে গিট রিবেস দিয়ে পুনরায় লেখেন এবং তাদের আবার ধাক্কা দেন, আপনার সহযোগীরা তাদের কাজটি পুনরায় একীভূত করতে হবে এবং আপনি চেষ্টা করার সময় জিনিসগুলি অগোছালো হয়ে যাবে will তাদের কাজটি আপনার মধ্যে আবার টানুন।
আপডেট:
নীচের আপনার মন্তব্যের ভিত্তিতে মনে হচ্ছে আপনার গিট ওয়ার্কফ্লোতে আপনার অসুবিধা হচ্ছে। এখানে কিছু তথ্যসূত্র যা সহায়তা করতে পারে:
gitworkflows
মানুষ পৃষ্ঠা: দেখুন "ঊর্ধ্বমুখী মার্জ" এবং "টপিক শাখা"এটি বুঝতে, গিট কীভাবে কাজ করে সে সম্পর্কে আমাদের কিছুটা বুঝতে হবে। গিট সংগ্রহস্থল একটি গাছের কাঠামো, যেখানে গাছের নোডগুলি কমিট হয়। এখানে একটি খুব সাধারণ সংগ্রহস্থলের উদাহরণ:
এটি মাস্টার শাখায় চারটি কমিট করে এবং প্রতিটি কমিটের একটি আইডি থাকে (এই ক্ষেত্রে, ক, খ, সি এবং ডি)। আপনি লক্ষ্য করবেন যে ডি বর্তমানে মাস্টার শাখার সর্বশেষ প্রতিশ্রুতি (বা হেড)।
এখানে, আমাদের দুটি শাখা রয়েছে: মাস্টার এবং মাই-ব্রাঞ্চ। আপনি দেখতে পাচ্ছেন যে মাস্টার এবং আমার শাখা উভয় a এবং b করে থাকে তবে তারপরে তারা বিভাজন শুরু করে: মাস্টারে সি এবং ডি থাকে, তবে আমার শাখায় ই এবং এফ থাকে। বি কে মাস্টারের তুলনায় আমার-শাখার "মার্জ বেস" বলা হয় - বা আরও সাধারণভাবে কেবল "বেস"। এটি উপলব্ধি করে: আপনি দেখতে পাচ্ছেন যে আমার শাখাটি মাস্টারের পূর্ববর্তী সংস্করণের উপর ভিত্তি করে ছিল।
সুতরাং আসুন আমরা বলি যে আমার শাখাটি বাসি হয়ে গেছে, এবং আপনি এটি মাস্টার্সের সর্বশেষতম সংস্করণ দিয়ে আপডেট করতে চান। এটি অন্য উপায়ে রাখার জন্য, আমার-শাখায় সি এবং ডি থাকা দরকার। আপনি একীভূত করতে পারেন, তবে এর ফলে শাখার অদ্ভুত একত্রীকরণ কমে থাকে যা টানার অনুরোধটিকে পর্যালোচনা করা আরও জটিল করে তোলে। পরিবর্তে, আপনি একটি রিবেস করতে পারেন।
যখন আপনি পুনঃস্থাপন করেন, গিটটি আপনার শাখার গোড়া খুঁজে পায় (এই ক্ষেত্রে, খ), সেই বেস এবং হেডের মধ্যে সমস্ত চুক্তি খুঁজে বের করে (এই ক্ষেত্রে, ই এবং এফ), এবং শাখার হেডে সেই প্রতিশ্রুতিগুলি পুনরায় খেলবে আপনি এই ক্ষেত্রে অব্যাহতি দিচ্ছেন (এই ক্ষেত্রে, মাস্টার) গিট আসলে নতুন কমিটস তৈরি করে যা আপনার পরিবর্তনগুলি মাস্টারের শীর্ষে দেখতে কেমন তা উপস্থাপন করে: ডায়াগ্রামে এই কমিটগুলি ই-এবং এফ called বলা হয় ′ গিট আপনার পূর্ববর্তী প্রতিশ্রুতিগুলি মুছে ফেলবে না: ই এবং এফটি এটিকে ছেড়ে দেওয়া হয়েছে এবং যদি রিবেসটিতে কোনও সমস্যা হয় তবে আপনি আগের মতো করে ফিরে যেতে পারেন things
যখন অনেক লোক একযোগে কোনও প্রকল্পে কাজ করছে, তখন অনুরোধগুলি দ্রুত বাসি হয়ে যেতে পারে। একটি "বাসি" টান অনুরোধটি হ'ল উন্নয়নের মূল লাইনটির সাথে আর আপ টু ডেট নেই এবং এটি প্রকল্পে মার্জ হওয়ার আগে এটি আপডেট করা দরকার। টান অনুরোধগুলি বাসি হয়ে যাওয়ার সর্বাধিক সাধারণ কারণ দ্বন্দ্বগুলির কারণে: যদি দুটি পুল অনুরোধ উভয় একই ফাইলে অনুরূপ লাইনগুলি সংশোধন করে, এবং একটি পুল অনুরোধ একীভূত হয়ে যায়, তবে নিমজ্জিত পুলের অনুরোধটির এখন বিরোধ হবে have কখনও কখনও, একটি টান অনুরোধ দ্বন্দ্ব ছাড়াই বাসি যেতে পারে: সম্ভবত নতুন কোডের সাথে সামঞ্জস্য করার জন্য কোডবেজে ভিন্ন ফাইলের পরিবর্তনের জন্য আপনার টানার অনুরোধের সাথে সম্পর্কিত পরিবর্তনগুলি প্রয়োজন, বা সম্ভবত যখন কেউ দুর্ঘটনাক্রমে ব্যর্থ ইউনিট পরীক্ষায় ফেল করেছে তখন শাখাটি তৈরি করা হয়েছিল মাস্টার শাখা কারণ নির্বিশেষে,
রিবাজিং ইতিহাস পুনর্লিখন। যদি সেই ইতিহাস সম্পর্কে কেউ না জানে, তবে তা পুরোপুরি ঠিক আছে। তবে, যদি সেই ইতিহাসটি সর্বজনবিদিতভাবে পরিচিত হয়, তবে গিটে পুনর্লিখনের ইতিহাসটি সত্যিকারের বিশ্বে যেমনভাবে কাজ করে: আপনার একটি ষড়যন্ত্রের দরকার।
ষড়যন্ত্রগুলি সত্যই একসাথে রাখা শক্ত, সুতরাং আপনি প্রথমে সর্বজনীন শাখাগুলিকে ছাড় দেওয়া ভাল avoid
উল্লেখ্য যে হয় সফল ষড়যন্ত্র উদাহরণ: pu
junio সি Hamano এর Git সংগ্রহস্থলের শাখা (গীত এস সি এম অফিসিয়াল সংগ্রহস্থলের) ঘন ঘন রি-বেস করা হয়। যেভাবে এটি কাজ করে তা হ'ল বেশিরভাগ যারা ব্যবহার করেন pu
তারাও গিট বিকাশকারী মেলিংলিস্টের সাবস্ক্রাইব হন এবং pu
শাখাটি পুনর্বাসিত হয়েছে তা মেলিংলিস্ট এবং গিট ওয়েবসাইটে ব্যাপক প্রচারিত হয়।
pu
git.git এর শাখাটি কীভাবে (জন) ওয়ার্কফ্লোতে রিবেস ব্যবহার করবেন তার একটি চূড়ান্ত সহায়ক উদাহরণ। যাঁরা এর সাথে পরিচিত নন, তাদের জন্য সাধারণ ধারণাটি হ'ল বিষয় শাখাগুলি পুনরায় চালু করা next
(যার সাথে মাস্টারে মার্জ হওয়ার ঠিক আগে অস্থির শাখা) থাকে না, তারপরে পুনরায় pu
সেট করে next
এবং সমস্ত বিষয় শাখা মার্জ করে শাখাটি পুনর্নির্মাণ করে । (সূত্র: নথিপত্র / হাওটুর / বজায় রাখা-git.txt git.kernel.org/?p=git/git.git;a=blob;f=Documentation/howto/... )
একটি রিবেস আপনার সংগ্রহস্থলের ইতিহাস পরিবর্তন করে। আপনি যদি বিশ্বের কাছে প্রতিশ্রুতিবদ্ধ রাখেন, অর্থাত্ এগুলি অন্যের কাছে উপলভ্য করে দিন এবং তারপরে আপনি প্রতিশ্রুতিবদ্ধ ইতিহাস সম্পর্কে আপনার দৃষ্টিভঙ্গি পরিবর্তন করেন, যার সাথে আপনার পুরানো ইতিহাস রয়েছে তার সাথে কাজ করা কঠিন হয়ে পড়ে।
আমার মনে হয় রিবেসকে ক্ষতিকারক হিসাবে বিবেচনা করা একটি ভাল ওভারভিউ is
git rebase
সেই ইতিহাসটি পুনরায় লেখার জন্য (- ইন্টারেক্টিভ?) ব্যবহার করা উচিত নয় , এটি অবশ্যই ব্যর্থতার রেসিপি O অন্যদিকে, যদি আমি বিষয়টিতে কিছু পরিবর্তন প্রত্যাখ্যান করেছি শাখা (শাখা এক্স থেকে) এবং এটিকে ধাক্কা দেয়, অন্য বিকাশকারী বিষয় শাখার পরিবর্তনের পরে এটি পুনরায় পুনরায় চালু করা একেবারে স্বাভাবিক। মূলত, আমিmerge
বেশ কিছু সময়ের জন্য ব্যবহার করে আসছি , তবে আমরা একই নৌকায়, ডারউইনওয়েব.नेट / পার্টিকেল / 86৮ এবং ইতিহাস প্রায় অকেজো ।