কোনও প্যাচ প্রয়োগ করার সময় বিবাদগুলি সমাধান করার কোনও উপায় আছে?


124

আমি উইন্ডোতে আছি

বিভিন্ন কারণে আমাদের কাছে বিভিন্ন এসএনএন শাখার একাধিক গিট উদাহরণ রয়েছে।

অনেক সময় আমি একটি সংগ্রহস্থল এ এটিকে ঠিক করতে, একটি প্যাচ তৈরি করতে এবং এটি সংগ্রহস্থল বিতে প্রয়োগ করতে চাই, বিবাদ আছে তা বাদে এটি ঠিক কাজ করে।

প্রত্যাখ্যান করার সময় আমি ঠিক ডানদিকে ফোল্ডারে ক্লিক করুন এবং টরটিওজিট ব্যবহার করুন এবং সমাধান বিকল্পটি নির্বাচন করুন। আমার দ্বন্দ্বের মধ্য দিয়ে আমাকে কাজ করতে এটি একটি দুর্দান্ত গিও এনেছে।

প্রত্যাখ্যাত প্যাচ খণ্ডগুলি দিয়ে এটি সম্পাদনের কোনও উপায় আছে কি?

প্যাচগুলি তৈরি / প্রয়োগ করার জন্য আমার বর্তমান পদ্ধতিটি এখানে

git format-patch master --stdout > c:\\patch\\file.patch
git apply --reject --ignore-space-change --ignore-whitespace c:\\patch\\file.patch

3
সমস্ত প্যাচিংয়ের বিকল্পগুলি ব্যর্থ হলে আমি সাধারণত হাত দিয়ে এটি করি ...
stdcall

একত্রীকরণ ব্যর্থ হলে, তার কারণ হল, প্রোগ্রাম করতে পারবেন না কিভাবে আন-ambiguously একত্রীকরণ কি জিনিসটা। আপনার <<<<, ===, >>>> সেট সহ একটি ফাইল পাওয়া উচিত এবং আপনাকে goোকাতে হবে এবং এগুলি হাতে হাতে সমাধান করতে হবে।
টাকসওয়েল

হ্যাঁ হাতে করে এটি করা একটি আসল পিতা যখন আপনার কথা বলতে গেলে কয়েকশ জন আনন্দ করে।
কেনয়য়ের130

আপনি যখন git mergetoolনিজের পছন্দের গুই (3 উইন্ডোজ কেডিফের আংশিক) এর সাথে 3-যুক্ত মার্জ ব্যবহার করতে এবং করতে চান তখন ...
g19fanatic

উত্তর:


254

আপনার প্যাচ তৈরি করতে নিম্নলিখিতটি করুন:

git format-patch --stdout first_commit^..last_commit > changes.patch

এখন আপনি যখন প্যাচগুলি প্রয়োগ করতে প্রস্তুত হন:

git am -3 < changes.patch

-3যদি সেখানে দ্বন্দ্ব হয় তিন ভাবে একত্রীকরণ করতে হবে। এই মুহুর্তে আপনি একটি কি করতে পারেন git mergetoolআপনি একটি GUI যান বা শুধু নিজে তেজ (আদর্শ ব্যবহার করে ফাইলগুলি একত্রীকরণ করতে চান <<<<<<, ||||||, >>>>>>দ্বন্দ্ব রেজল্যুশন)।


3
এটি যোগ করতে দরকারী হতে পারে --ignore-whitespace --ignore-space-changeজন্য git amখুব। আমার তুচ্ছ সংশ্লেষগুলি ছিল যা এগুলি ছাড়া হয় নি।
অ্যাঙ্গুলারসেন

12
git apply -3 changes.patchআমার জন্যও কাজ করছে বলে মনে হচ্ছে
পিটারফ্লিন

1
প্যাচটি পরিষ্কারভাবে প্রয়োগ না করা সত্ত্বেও আমি এখনও "কোনও ফাইল মার্জ করার দরকার নেই" পেয়েছি git mergetool। পরিবর্তে আমাকে বেসটি ব্যবহৃত মূল প্যাচটি কমিট করার সন্ধান করতে হয়েছিল, তার উপরে প্রয়োগ করুন (ভাগ্যক্রমে আমার রেপোতে এটি ছিল) এবং তারপরে পুনরায় চালু করুন।
জোজকায়িক্ক

4
আমি @ জোজকাইএক্কের মতো একই সমস্যাটি পাচ্ছি। আমরাও git am -3না git apply -3আসলে আমার ফাইল মধ্যে দ্বন্দ্ব চিহ্নিতকারী ড্রপ হবে, যদিও আমি বার্তা পাওয়ার Applied patch to 'configure.ac' with conflicts.এবং error: patch failed: ...। এটি চালু থাকলে git 2.17.1। সম্ভবত যখন কিছু ফাইল একেবারে প্যাচ করা যায় না, গিট পিছনে ফিরে যায়?
এনএইচ 2

1
আমি @ এনএইচ 2 এর মতো একই সমস্যা পেয়েছি, আপনি কি কখনও সমস্যাটি খুঁজে পেয়েছেন?
এরিডানিস

12

প্যাচ প্রয়োগ করার সময়, ঘৃণা বা মার্জ করার সময় আপনি যদি একই সংঘাতের সেটটিতে ঘন ঘন দৌড়াচ্ছেন তবে আপনি গিট রিরে (পুনরায় ব্যবহারের রেকর্ড রেজোলিউশন) ফাংশনটি ব্যবহার করতে পারেন। অতীতে কীভাবে বিরোধগুলি সমাধান হয়েছিল তার ভিত্তিতে বিরোধগুলি কীভাবে সমাধান করা উচিত তা আপনাকে পূর্বনির্ধারণ করতে দেয়। এটি কীভাবে কাজ করে তার বিশদ জানতে http://git-scm.com/blog/2010/03/08/rerere.html দেখুন ।


5

TortoiseGit এর একটি মার্জ বৈশিষ্ট্য রয়েছে যা প্যাচ ফাইলগুলি খুলতে পারে।

এখানে এটির একটি ছবি আছে


আসলে মার্জ বিকল্পটি আমি যা খুঁজছি হতে পারে।
কেনোয়ার130

সত্যি? আমি দীর্ঘদিন কচ্ছপ ব্যবহার করি নি, তবে লিঙ্কযুক্ত পৃষ্ঠায় লেখা আছে "কচ্ছপমর্জি গিট প্যাচ ফাইলটি সরাসরি খুলতে পারে, আপনি এটি পর্যালোচনা করুন এবং কার্য কপিতে প্যাচ করুন।", সুতরাং মনে হয় এটি হওয়া উচিত!
এমএস

এটি প্যাচ ফাইলগুলি ওপেন করে ... তবে কখনও কখনও প্যাচ ফাইলের ফর্ম্যাটটি কচ্ছপগুলি ভেঙে দেয়। আমি কখনই ডিফ-ইউ দিয়ে সফল হইনি, বরং ডিফ-সি আউটপুট নিয়ে এসেছি।
থিসলেকনোট

আপনি একটি কার্যনির্বাহী ট্রি ফোল্ডারে প্যাচগুলি ডানদিক করতে পারেন এবং "প্যাচ সিরিয়াল প্রয়োগ করুন" (0001-xxx.patch, ... 0002-xxy.patch এর মতো প্যাচগুলির জন্য) বা "একক প্যাচ ফাইল প্রয়োগ করুন" নির্বাচন করতে পারেন।
মিঃটাক্স

2

আমার পদ্ধতিটি হ'ল:

  • ফাইলগুলি অভিন্ন যেখানে "একীকরণ"-ব্রাঙ্ক তৈরি করুন
  • এই সংহতকরণ-শাখায় প্যাচ প্রয়োগ করুন
  • এটি মাস্টারকে মার্জ করুন বা পুনর্বাসিত করুন (রিবাজটি এখানে কার্যকর কিনা তা জানি না, কারণ আরও প্যাচ প্রয়োগ করার পরে কী হবে তা আমি জানি না)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.