গিট রিবেস একীভূত সংঘাত


91

আমি একটি গিথুব রেপো কাঁটাচামচ করেছি এবং আমার গিথুব রেপোতে কাজ করেছি।
আমি পুল-অনুরোধ করেছি এবং এটি সম্পন্ন হয়েছে।

এর পরে উজানের ধারায় আরও কিছু কমিট ছিল তাই এখন আমি রিবেস করতে চাই, আমার মনে হয় আমার কী করতে হবে।
তবে আমি এই সংহত দ্বন্দ্বগুলি পেয়ে যাচ্ছি:

First, rewinding head to replay your work on top of it...
Applying: Issue 135 homepage refresh
Using index info to reconstruct a base tree...
<stdin>:17: trailing whitespace.
      %h4 
warning: 1 line adds whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging app/views/layouts/application.html.haml
CONFLICT (content): Merge conflict in app/views/layouts/application.html.haml
Auto-merging app/views/home/index.html.haml
CONFLICT (content): Merge conflict in app/views/home/index.html.haml
Auto-merging app/views/home/_group_projects.html.haml
CONFLICT (content): Merge conflict in app/views/home/_group_projects.html.haml
Failed to merge in the changes.
Patch failed at 0001 Issue 135 homepage refresh

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To check out the original branch and stop rebasing run "git rebase --abort".

আমি কীভাবে এগুলি ঠিক করতে জানি না, দয়া করে সহায়তা করুন।


এই পোস্টে আমার উত্তরটি দেখুন: stackoverflow.com/questions/48307297/…
অভিষেক

উত্তর:


121

মুক্তি একটি বাস্তব মাথাব্যথা হতে পারে। আপনাকে একীভূত দ্বন্দ্বগুলি সমাধান করতে হবে এবং প্রত্যাখ্যান চালিয়ে যেতে হবে। উদাহরণস্বরূপ আপনি মার্জ সরঞ্জামটি ব্যবহার করতে পারেন (যা আপনার সেটিংসের উপর নির্ভর করে পৃথক হয়)

git mergetool

তারপরে আপনার পরিবর্তনগুলি যুক্ত করুন এবং এগিয়ে যান

git rebase --continue

শুভকামনা


4
হ্যাঁ রেজিবিং করাই মাথা ব্যথা, আমি কি গিট টান আপ স্ট্রিম মাস্টার ব্যবহার করতে পারি?
পহ্নিন

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

7
@ iitempo আপনার কোন কমিট করার দরকার নেই। রিবেসটি চালিয়ে যাওয়ার অনুমতি দেওয়ার জন্য কেবল গিট অ্যাডই যথেষ্ট।
এনজিমেটিক্যাল

45

রিবেস চলাকালীন আপনার যখন বিরোধ আছে তখন আপনার কাছে তিনটি বিকল্প রয়েছে:

  • আপনি git rebase --abortরিবেস সম্পূর্ণরূপে পূর্বাবস্থায় ফেরাতে চালাতে পারেন । গিট আপনাকে আপনার শাখার রাজ্যে ফিরিয়ে দেবে যেমন গিট রিবেস বলার আগে ছিল।

  • আপনি git rebase --skipপ্রতিশ্রুতি সম্পূর্ণরূপে এড়াতে দৌড়াতে পারেন । তার মানে হল যে সমস্যাযুক্ত প্রতিশ্রুতি দ্বারা প্রবর্তিত কোনও পরিবর্তন অন্তর্ভুক্ত করা হবে না। এটি খুব বিরল যে আপনি এই বিকল্পটি বেছে নেবেন।

  • ইল্টেম্পো যেমন বলেছিল তেমনি আপনি সংঘাত ঠিক করতে পারেন। আপনি শেষ হয়ে গেলে, আপনাকে কল করতে হবে git rebase --continue। আমার মার্জেটুলটি কেডিফ 3 তবে আরও অনেকগুলি রয়েছে যা আপনি বিবাদগুলি সমাধান করতে ব্যবহার করতে পারেন। আপনাকে কেবল গিটের সেটিংসে আপনার মার্জ সরঞ্জামটি সেট করতে হবে যাতে আপনি https://git-scm.com/docs/git-mergetool কল করার সময় এটি চালু করা যেতে পারেgit mergetool

উপরের কোনওটি যদি আপনার পক্ষে কাজ করে না, তবে বেড়াতে যান এবং আবার চেষ্টা করুন :)


4
হ্যাঁ, তবে কীভাবে এই সংঘাতের সমাধান করবেন? এটিই প্রশ্ন
W

ম্যানুয়াল ফিক্সটি সম্পন্ন করার জন্য @ কানসাইরোবট একটি বিকল্প: একটি পাঠ্য সম্পাদককে দ্বন্দ্বপূর্ণ ফাইলটি খুলুন এবং সন্ধান করুন<<<<<
২:১০

16

আপনার যদি পুনর্বাসনের জন্য প্রচুর প্রতিশ্রুতি থাকে এবং এর কিছু অংশ সংঘাত দেয়, যা সত্যিই ব্যথিত হয়। তবে আমি কীভাবে "সমস্ত বিবাদগুলিকে স্কোয়াশ" করতে পারি তার একটি কম-পরিচিত পদ্ধতির পরামর্শ দিতে পারি ।

প্রথমে, চেকআউট টেম্প শাখা এবং স্ট্যান্ডার্ড মার্জ শুরু করুন

git checkout -b temp
git merge origin/master

আপনার দ্বন্দ্বগুলি সমাধান করতে হবে তবে কেবল একবার এবং কেবল আসল। তারপরে সমস্ত ফাইল মঞ্চ করুন এবং মার্জ শেষ করুন।

git commit -m "Merge branch 'origin/master' into 'temp'"

তারপরে আপনার শাখায় ফিরে আসুন (এটি আলফা হতে দিন ) এবং পুনরায় শুরু করুন, তবে কোনও বিরোধের সমাধানের সাথে স্বয়ংক্রিয়ভাবে।

git checkout alpha
git rebase origin/master -X theirs

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

git merge --ff $(git commit-tree temp^{tree} -m "Fix after rebase" -p HEAD)

এবং অস্থায়ী শাখা মুছুন

git branch -D temp

এখানেই শেষ. আমরা লুকানো মার্জ করে রিবেস করেছি।

এছাড়াও আমি একটি স্ক্রিপ্ট লিখেছিলাম, যাতে এটি একটি কথোপকথন পদ্ধতিতে করা যায়, আপনি এটি এখানে খুঁজে পেতে পারেন ।


13

দ্রষ্টব্য: গিট 2.14.x / 2.15 (Q3 2017) এর সাথে, git rebaseবিরোধের ক্ষেত্রে বার্তাটি আরও পরিষ্কার হবে।

দেখুন কমিট 5fdacc1 দ্বারা (16 জুলাই 2017) উইলিয়াম Duclot ( williamdclt)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে 076eeec কমিট , 11 আগস্ট 2017)

rebase: অনভিজ্ঞ ব্যবহারকারীদের জন্য সমাধান বার্তা পরিষ্কার করুন

আগে:

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort"

পরে:

Resolve all conflicts manually, 
mark them as resolved with git add/rm <conflicted_files>
then run "git rebase --continue".

You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".')

গিট ইউআই তাদের ত্রুটি বার্তাগুলি সম্বোধন করে যাদের সহায়তা করে তাদের উন্নতি করা যেতে পারে: অনভিজ্ঞ এবং নৈমিত্তিক গিট ব্যবহারকারীরা।
এই অভিপ্রায় অনুসারে, এই বার্তাগুলিতে ব্যবহৃত শর্তাদি এই বিভাগের ব্যবহারকারীদের দ্বারা বোঝা যেতে পারে এবং সমস্যা সমাধানের জন্য তারা তাদের গাইড করে তা নিশ্চিত করা সহায়ক।

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


4
সুন্দর! সহায়তা পৃষ্ঠাটি পরিবর্তনের প্রতিশ্রুতি দিয়ে সংঘাত নিরসনে বলে, কিন্তু না! এখানে আমাদের প্রতিশ্রুতি এড়ানো এবং পরিবর্তে কেবল মার্জ চালিয়ে যাওয়া দরকার! (সহায়তা পৃষ্ঠা: help.github.com/articles/… )
জেরেথের
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.