গিট শাখাটি পুনর্বাসনের পরে ডাইভার্জ করা হয়েছে


112

আমি স্থানীয়ভাবে একটি শাখা পুনরায় চালু করেছি যা ইতিমধ্যে ঠেলাঠেলি করা হয়েছিল।

গিট পরামর্শ দিচ্ছে যে আমার শাখা এবং রিমোটটি অন্যদিকে চলে গেছে এবং এটি:

"এবং যথাক্রমে 109 এবং 73 টি আলাদা কমিট রয়েছে"

আমার শাখাকে চাপ দেওয়া কি এর সমাধান করবে - অর্থাত্ কোনও রিবেসের পরে এটি কী প্রত্যাশিত?


আমি একই সমস্যা আছে। আমরা কি বলতে পারি যে "করার সঠিক উপায়" তা হল স্থানীয় শাখাটি পুনরায় চালু করা এবং কেবল তখনই চাপ দেওয়া?
মীর দিদারিয়ান

উত্তর:


154

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

যেহেতু আপনি ইতিমধ্যে শাখাটি ঠেলাঠেলি করছিলেন, তাই আপনার বিরুদ্ধে বিদ্রোহ করার পরিবর্তে আপনার উত্স শাখায় মার্জ হওয়া উচিত ছিল। আপনার নতুন শাখাটি ( -fপতাকা ব্যবহার করে ) "জোর করে ধাক্কা দেওয়া" সম্ভব , তবে একটি সাধারণ ধাক্কা কাজ করবে না, কারণ শাখার ইতিহাসের অখণ্ডতা বিঘ্নিত হবে। আপনি যদি এই শাখায় অন্যের সাথে সহযোগিতা করছেন, জোর করে চাপ দেওয়া একটি খারাপ ধারণা, কারণ হঠাৎ হিস্ট্রি মেলে না, যখন অন্য সহযোগীদের খুব বিভ্রান্তির কারণ হতে পারে।

টিএল; ডিআর - আপনি যদি সহযোগিতা না করে থাকেন তবে পুশ-এফ ব্যবহার করে শাখাটি টিপুন। আপনি যদি হন তবে শাখাটি পূর্বের অবস্থায় পুনরায় সেট করুন এবং পরিবর্তে উত্স শাখায় মার্জ করুন।


1
"যেহেতু আপনি ইতিমধ্যে শাখাটি ঠেলেছেন, আপনার উত্স শাখায় একত্রী হওয়া উচিত ছিল" - কেন এটি?
হামেমেট

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

4
আপনি ইতিমধ্যে অন্য কেউ কিছু চাপ দিয়েছেন কিনা তা আপনি যদি নিশ্চিত না হন তবে আপনি পুশ - ফোর্স-সহ-ইজারা ব্যবহার করতে পারেন।
কনসোল

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

1
আপনার অন্য শাখাটি মার্জ করা কি কোনও খারাপ ধারণা নয়? উদাহরণস্বরূপ মাস্টারকে একটি বৈশিষ্ট্য শাখায় মার্জ করা - এটি কি এর জন্য কোনও নতুন প্রতিশ্রুতি তৈরি করবে না? এই বৈশিষ্ট্য শাখার পরে যদি মাস্টারটিতে মার্জ হয়ে যায় তবে এটি কি অতিরিক্ত প্রতিশ্রুতি দেবে না?
রস

55

আপনার সমস্ত কমিটগুলি এইডগুলি পরিবর্তিত হয়েছে, তাই ডাইভার্সনটি সত্যিকার অর্থে ডাইভারেজ নয়।

আপনার সমস্যার সমাধানের জন্য আপনাকে আপনার দূরবর্তী শাখাটি ওভাররাইট করতে হবে:

git push -f origin experiment

http://git-scm.com/book/ch3-6.html

ব্যাখ্যা:

দেখুন এই ছবিতে সি 3 কীভাবে রিবেসের পরে সি 3 হিসাবে রাখা হয়নি, তবে সি 3 হিসাবে রয়েছে '। এটি কারণ এটি ঠিক সি 3 নয়, তবে এর কোডের সমস্ত পরিবর্তন রয়েছে।

রি-বেসের ফলে

এই অন্যান্য চিত্রটিতে আপনি কোনও রিমোট জড়িত থাকাকালীন কী কী রিবেস দেখা যায় এবং কেন সেখানে কোনও পরিবর্তন ঘটে থাকে তার চিত্র পান।

ডাইভার্জ এবং গিট পুশ

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

উপরের লিঙ্কটি চেকআউট করুন এবং "গিট পুশ - ফোর্স" অনুসন্ধান করুন। আপনি আরও বিস্তারিত ব্যাখ্যা দেখতে পাবেন।


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

এটির কাঙ্ক্ষিত প্রভাব নাও থাকতে পারে। রিবেসটি করার আগে আপনি আপনার পরিবর্তনগুলি 'দ্রুত এগিয়ে' মার্জ করে নিন তা নিশ্চিত করুন।
মিমোরালিয়া

1

নিম্নলিখিতগুলি করে ধাক্কা দেওয়ার জন্য রিবেস ডাইভার্জে আমার সাফল্য ছিল:

git checkout mybranch
git pull
git push origin mybranch

টানটি বিচ্যুতির সমাধান করেছে।

টান আগে

Your branch and 'origin/mybranch' have diverged,
and have 2 and 1 different commit(s) each, respectively.

পুল আউটপুট

পুনরাবৃত্তি দ্বারা তৈরি মার্জ। মাইপথ / মাইফিল.পি | 12 ++++++++++++ - 1 টি ফাইল পরিবর্তন হয়েছে, 11 টি সন্নিবেশ (+), 1 টি মুছে ফেলা (-)

পরে টানুন

আপনার শাখা 3 টি কমিট দ্বারা 'উত্স / মাইব্র্যাঞ্চ' এর চেয়ে এগিয়ে।

ধাক্কা পরে

মাইব্র্যাঞ্চ শাখার চেয়ে 3 এগিয়ে রয়েছে এখনও একটি ওপেন পুলের অনুরোধ সংস্থার বার্তাটি প্রতিশ্রুতিবদ্ধ ইতিহাসে যুক্ত হয়েছে ব্রাঞ্চের রিমোটের মাইব্র্যাঞ্চকে মাইব্র্যাঞ্চে মার্জ করুন

আমি ধরে নিচ্ছি এটি সম্ভবত ফোর্স পুশ যা করে তা আমি যাচাই করে নি।

অন্যরা যেমন বলেছে, আপনার কাছে ইতিমধ্যে যদি ওপেন টানার অনুরোধ থাকে তবে রিবেস এড়ান। আমি এই উদাহরণটি এমন কিছু হিসাবে দিচ্ছি যা আমার পক্ষে কাজ করেছিল।


1

আপনার বর্তমান স্থানীয় শাখায় লক্ষ্য শাখাটিকে ছাড় দিয়ে, আপনার লক্ষ্য শাখায় স্যুইচ করে, এবং তারপরে আপনার স্থানীয় শাখাকে লক্ষ্যবস্তুতে প্রত্যাখ্যান করে একটি জোর ধাক্কা ছাড়াই এটি ঠিক করা যেতে পারে। অনুপস্থিত যেহেতু অনুপস্থিত হতে পারে এমন প্রতিশ্রুতি যুক্ত করা হয়েছে এবং এটি আর তৈরি করার দরকার নেই This সহজ ব্যাখ্যা জন্য উদাহরণ:

  1. প্রধান শাখা বিকাশ হয়
  2. আপনি একটি নতুন শাখা বৈশিষ্ট্য চেকআউট / করণীয়_ স্টাফ
  3. একটি দলের সদস্য বিকাশের জন্য নতুন প্রতিশ্রুতি দেয় p

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

  1. গিট চেকআউট বৈশিষ্ট্য / করণীয়_ স্টাফ
  2. গিট রিবেস বিকাশ
  3. গিট চেকআউট বিকাশ
  4. গিট রিবেস বৈশিষ্ট্য / করণীয়_ স্টাফ

পদক্ষেপ 2 থেকে রিবেসটি অনুপস্থিত প্রতিশ্রুতিটি ফিচারে / করানো_ স্টাফের মধ্যে নিয়ে আসে তাই যখন চতুর্থ ধাপটি আসে তখন তা আপ টু ডেট থাকে এবং পরিবর্তনের জন্য নতুন প্রতিশ্রুতি তৈরি করার প্রয়োজন হয় না।

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

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