গিট রিবেজ - সমস্ত সংহত বিরোধগুলি সমাধান হয়ে গেলেও কনটিনিউ অভিযোগ করে


115

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

আমি আমার শাখা থেকে মাস্টারের বিরুদ্ধে রিবেস করেছি:

git rebase master

এবং নিম্নলিখিত ত্রুটি পেয়েছি

 First, rewinding head to replay your work on top of it...
 Applying: checkstyled.
 Using index info to reconstruct a base tree...
 Falling back to patching base and 3-way merge...
 Auto-merging AssetsLoader.java
 CONFLICT (content): Merge conflict in AssetsLoader.java
 Failed to merge in the changes.
 Patch failed at 0001 checkstyled.

সুতরাং আমি আমার প্রিয় সম্পাদকের কাছে গিয়েছিলাম, 1 টি লাইন দ্বন্দ্ব সংশোধন করেছি, ফাইলটি সংরক্ষণ করেছি এবং গিট স্ট্যাটাস দিয়েছি এবং নিম্নলিখিত ফলাফলটি পেয়েছি:

 # Not currently on any branch.
 # Changes to be committed:
 #   (use "git reset HEAD <file>..." to unstage)
 #
 #  modified:   PassengerContactHandler.java
 #
 # Unmerged paths:
 #   (use "git reset HEAD <file>..." to unstage)
 #   (use "git add/rm <file>..." as appropriate to mark resolution)
 #
 #  both modified:      AssetsLoader.java
 #

আমি একটি গিট এ্যাসেটস লোডার.জাভা এবং গিট স্ট্যাটাস যুক্ত করেছি এবং নিম্নলিখিতটি পেয়েছি:

 # Not currently on any branch.
 # Changes to be committed:
 #   (use "git reset HEAD <file>..." to unstage)
 #
 #  modified:   AssetsLoader.java
 #  modified:   PassengerContactHandler.java
 #

এবং যখন আমি গিটকে পুনঃব্যবস্থা করতাম - চালিয়ে যাব:

git rebase --continue
You must edit all merge conflicts and then
mark them as resolved using git add

আমি জানি আমি প্যাচটি এড়িয়ে যেতে এবং পুনরায় চালিয়ে যেতে পারি, তবে আমি নিশ্চিত নই যে প্যাসেঞ্জার কনট্যাক্টহ্যান্ডলিরজাভায় পরিবর্তনগুলি আমার শাখায় পুনর্বাসিত হবে কিনা।

সুতরাং আমি নিশ্চিত নই, আমার কীভাবে এগিয়ে যাওয়া উচিত?

সম্পাদনা: এটি কি এমন হতে পারে যে সমস্যার সমাধান হওয়া ফাইলটি মূল সংস্করণের মতো?

অনেক ধন্যবাদ, লুকাস

সম্পাদনা করুন, আমার সাথে আবার এটি ঘটেছিল:

এটা আমার সাথে আবার ঘটেছিল,

(307ac0d...)|REBASE)$ git status
# Not currently on any branch.
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   assets/world/level1/Level-1.xml
#   modified:   George.java
#   modified:   DefaultPassenger.java
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   mb-art/originalAssets/27dec/

((307ac0d ...) | REBASE) it গিট রিবেস - অবিরত

You must edit all merge conflicts and then
mark them as resolved using git add

গিট - রূপান্তর

git version 1.7.1

এটি সম্পূর্ণ আউটপুট git status, ডান? এর নিচে কোন অনুপস্থিত নেই?
ক্যাস্যাবেল

git-rebaseযদি কোনও সমস্যা না থাকে তবে কখনও সমাধান না করা দ্বন্দ্ব রয়েছে বলে প্রতিবেদন করা উচিত নয়। আপনি যদি সহজ পরীক্ষার ক্ষেত্রে সমস্যাটি পুনরুত্পাদন করার জন্য পরিচালনা করতে পারেন তবে এটি ডিবাগ করা অনেক সহজ হবে তবে তবুও যদি আপনার git statusযখন কোনও দ্বন্দ্বের কথা বলা git rebase --continueনা থাকে এবং আপনার গীত সংস্করণটি বর্তমান রয়েছে, আপনি গিট দেবকে ইমেল করার চেষ্টা করতে পারেন আপনি যতটা ডায়াগনস্টিক তথ্য পেতে পারেন তার সাথে git@vger.kernel.org এ মেলিং তালিকা।
ক্যাস্যাবেল

1
এটি আমার সাথে আবার ঘটেছিল, (307ac0d ...) | REBASE) it গিট স্ট্যাটাস # বর্তমানে কোনও শাখায় নেই। প্রতিশ্রুতিবদ্ধ হতে পরিবর্তনগুলি: # (আনতে বাড়াতে "গিট রিসেট হেড <ফাইল> ..." ব্যবহার করুন) # # সংশোধিত: সম্পদ / বিশ্ব / স্তর 1 / স্তর-1.xML # সংশোধিত: জর্জ.জাভা # সংশোধিত: ডিফল্টপ্যাসেঞ্জার.জভা # # Untracked ফাইলগুলি: # (ব্যবহার "Git জুড়ুন <ফাইল> ..." কি প্রতিশ্রুতিবদ্ধ হতে হবে অন্তর্ভুক্ত করা) # # মেগাবাইট অত্যাধুনিক / originalAssets / 27dec /
লুকাস

আমি মনে করি আপনার GITKRAKEN ব্যবহার করা উচিত, এটি আপনার বিরোধগুলি সমাধানে আপনাকে সহায়তা করবে
নিখিল ভরদ্বাজ

উত্তর:


115

এটি ঘটে কারণ কোনও বিরোধের সমাধানের সময়, আপনি যে শাখায় পুনর্বাসনা করছেন সেই শাখায় প্রয়োগ করা প্যাচ বিয়িংয়ের সমস্ত কোড সরিয়ে ফেলেছেন। git rebase --skipচালিয়ে যেতে ব্যবহার করুন ।

আরও কিছু বিশদ:

সাধারণত, রিবেসিংয়ের সময় কোনও সংঘাত ঠিক করার সময় আপনি প্যাচটিতে কিছু বা সমস্ত কোড রেখে আপনি যে শাখায় পুনঃস্থাপন করবেন সেই শাখায় বর্তমানে প্রয়োগ করা হচ্ছে আপনি বিরোধী ফাইলটি সম্পাদনা করবেন। প্যাচ ঠিক করার পরে এবং করছেন

git add your/conflicted/file
git status

আপনি পরিবর্তিত ফাইল দেখিয়ে একটি (সাধারণত সবুজ) লাইন পাবেন

সংশোধিত: আপনার / বিরোধী / ফাইল

এই পরিস্থিতিতে গিট রিবেস - কনটিন্যু ঠিকঠাক কাজ করবে।

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

git rebase --continue

গিট অভিযোগ করবে

কোনও পরিবর্তন নেই - আপনি 'গিট অ্যাড' ব্যবহার করতে ভুলে গেছেন?

এই পরিস্থিতিতে গিটটি আপনাকে যা করতে চায় তা হ'ল ব্যবহার করা

git rebase --skip

প্যাচ এড়িয়ে যেতে। পূর্বে আমি কখনই এটি করিনি, কারণ আমি সর্বদা নিশ্চিত ছিলাম না যে আসলে কী করা যায় তা আসলে আমার পক্ষে স্পষ্ট ছিল না যে "এই প্যাচটি বাদ দিন" আসলে কী বোঝায়। তবে আপনি যদি কোনও গ্রিন লাইন না পেয়ে থাকেন

সংশোধিত: আপনার / বিরোধী / ফাইল

দ্বন্দ্বযুক্ত ফাইলটি সম্পাদনা করে, এটিকে যুক্ত করে, এবং গিট স্ট্যাটাস করার পরে, আপনি পুরো প্যাচটি সরিয়ে ফেলার বিষয়ে নিশ্চিত হন এবং আপনি পরিবর্তে ব্যবহার করতে পারেন

git rebase --skip

অবিরত রাখতে.

মূল পোস্টটি এটি কখনও কখনও কাজ করে বলেছে:

git add -A
git rebase --continue
# works magically?

... তবে এটির উপর নির্ভর করবেন না (এবং আপনার সংগ্রহস্থল ফোল্ডারে বাকী ফাইলগুলি যুক্ত না করার বিষয়ে নিশ্চিত হন)


1
আমি একই সমস্যা এবং একই সমাধান আছে বলে মনে হয়েছিল, এছাড়াও যাদুকর মনে হয়েছিল!
1:53

আমার একই সমস্যা ছিল, দেখে মনে হচ্ছে আপনি যদি রিবেসড শাখায় রিফ্যাক্ট করে নতুন ফাইল যুক্ত করেন এবং তারপরে মার্জ রেজোলিউশন প্রক্রিয়া সেই নতুন ফাইলগুলিতে পরিবর্তন করে, আপনার স্পষ্টতই আবার এগুলি যুক্ত করতে হবে।
ইব্রাহিম

আপনি যদি আপনার রেপোতে সমস্ত জাঙ্ক ফাইলগুলি ট্র্যাক করতে না চান তবে এটি করবেন না।
জেড লিঞ্চ

git add ...দীর্ঘ পাথ সহ ফাইলের একটি গাদা পরিবর্তন করার পরে টাইপ করতে সত্যিই বিরক্তিকর হয়। git add --all-the-files-i-changedআমি কি আগে চালাতে পারি git rebase continue?
জোজকিয়াক্ক

3
গিট রিবেস
--স্কিপ

21

গিট 1.7 এ একটি বাগ বলে মনে হচ্ছে

এটি কীভাবে সমাধান করবেন সে সম্পর্কে একটি ভাল নিবন্ধ এখানে

মূলত এটি কাজ করা উচিত, যদি আপনি একটি করেন

git diff

আপনার দ্বন্দ্বগুলি সমাধান করার পরে এবং তারপরে

git rebase --continue

কাজ করা উচিত.


8

আমার কাছে এই সতর্কতাটি পাওয়া গেল যখন আমার কাছে স্টেস্টেস্টেড ফাইল ছিল না। নিশ্চিত করুন যে আপনার কাছে কোনও স্টেস্টেড ফাইল নেই don't যদি আপনি স্টেস্ট না করা ফাইলের পরিবর্তনগুলি না চান তবে তারপরে পরিবর্তনগুলি বাতিল করুন

git rm <filename>  

1
এত সহজ এটি একটি মন্তব্য হতে পারে; এটি একটি উত্তর হওয়া উচিত তাই সহায়ক। ধন্যবাদ!
লুকাস লিমা

4

আপনার কমান্ড লাইনে এটি চালানোর চেষ্টা করুন:

$ git mergetool

আপনাকে দ্বন্দ্বগুলি সমাধান করার জন্য একটি ইন্টারেক্টিভ সম্পাদক আনতে হবে Should এটি ম্যানুয়ালি করার চেষ্টা করার চেয়ে সহজ এবং আপনি যখন মার্জ করবেন তখন গিটটিও স্বীকৃত হবে। এমন পরিস্থিতিতেও এড়ানো যাবে যেখানে আপনি দুর্ঘটনার সাথে পুরোপুরি একত্রী না হয়ে যান যা আপনি নিজে নিজে করার চেষ্টা করার পরে ঘটতে পারে।


সবেমাত্র উপলব্ধ করা হয়েছে এটি আরও সহজ হতে পারে এবং ভবিষ্যতে আপনাকে এ জাতীয় পরিস্থিতি এড়াতে দেয়।
ব্যাটকিন্স

1
তুমি আমার সন্ধ্যা বাঁচিয়েছ যদিও এটি একটি সাধারণ সরঞ্জাম, তবে আমি কখনই এই সরঞ্জামটি ছাড়া আমার দ্বন্দ্বগুলি সমাধান করতে পারি তা বুঝতে সক্ষম হব না।
eonil

4

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


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

3

আপনি অ্যাসেটস লোডার.জভাতে একীভূত বিরোধটি মিস করেছেন। এটি খুলুন এবং দ্বন্দ্ব চিহ্নিতকারীদের জন্য অনুসন্ধান করুন (">>>>", "====", "<<<<<") এবং তারপরে আবার গিট অ্যাড করুন। আপনার যদি এটি খুঁজে পেতে সমস্যা হয় তবে একটি 'গিট ডিফ - স্টেজড' করুন।


3
আমি সমস্ত ট্র্যাক করা ফাইলগুলিতে একটি গ্রেপ করেছি এবং কোনও বিরোধী মার্কার নেই।
লুকাস

নেই git diff --stagedকিছু দরকারী প্রকাশ করে? এটি ইঙ্গিত করে যে আপনি পুনর্বাসনের এই মুহুর্তে মার্জ সংঘাত (গুলি) সমাধান করতে আপনি যে পরিবর্তনগুলি করতে চলেছেন। একটি "ওফ থাকা উচিত, ফাইলগুলির মধ্যে একটিতে এই" বিটটি সমাধান করার জন্য আমি কী করতে চেয়েছিলাম তা নয়।
ইথার

4
আপনি যখন এগিয়ে যাওয়ার চেষ্টা করবেন তখন গিট সংহত বিবাদ চিহ্নিতকারীদের সন্ধান করবে না। এটি কেবল সূচিটি পরিষ্কার অবস্থায় রয়েছে তা পরীক্ষা করে দেখুন। যদি আপনি এমন কোনও ফাইল মঞ্চস্থ করেন যার মধ্যে এখনও বিরোধী মার্কার রয়েছে তবে আপনি ইঙ্গিত করছেন যে আপনি এটিতে তাদের সাথে এটি প্রতিশ্রুতিবদ্ধ করতে চান। এটি সম্ভবত সর্বদা একটি ভুল, তবে এটি আপনাকে এটি করতে দেয়।
ক্যাস্যাবেল

@ অন্যথায় এটি মোটেই কারণ নয়। git addএমনকি এতে বিরোধী চিহ্নিতকারীদের দিয়েও আপনি একটি ফাইল করতে পারেন । সর্বোপরি, এই জাতীয় ফাইলগুলি পুরোপুরি আইনী হতে পারে!
fge

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

3

আমার কেবল এই সমস্যাটি ছিল এবং আমি যখন মনে করি যে এর কয়েকটি কারণ থাকতে পারে তবে আমার এখানে ...

আমার একটি গিট প্রি কমিট হুক ছিল যা নির্দিষ্ট শর্তে কমিটগুলি প্রত্যাখ্যান করে। ম্যানুয়ালি কমিট করার সময় এটি ঠিক আছে, যেহেতু এটি হুকের আউটপুট প্রদর্শন করবে এবং আমি এটি ঠিক করতে পারি বা কমিট - না-ভেরিফাই ব্যবহার করে এটি উপেক্ষা করতে পারি।

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

এটি ঠিক করতে, আপনার সমস্ত পরিবর্তন মঞ্চ করুন এবং 'গিট রিবেস - কনটিনিউ' না করে 'গিট কমিট' চেষ্টা করুন। আপনি যদি একই হুক সমস্যায় ভুগছেন তবে তার ব্যর্থতার কারণগুলি আপনার উচিত।

মজার বিষয় হল, যদিও গিট রিবেস গিট হুক থেকে আউটপুট প্রদর্শন করে না, হুকগুলি বাইপাস করার জন্য এটি কোনও - যাচাই-বাছাই করে না।


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

কেবল রেকর্ডের জন্য, যেমন আমি সম্প্রতি একই ধরণের সমস্যার সাথে লড়াই করছি, বিকল্পটি git rebaseগ্রহণ করে --no-verify। যাইহোক, এটি কেবল pre-rebaseহুক বাদ দেয় তবে পরবর্তী বিকল্পগুলিতে এই বিকল্পটি প্রয়োগ করা হয় না git commit
pkrysiak

একটি ভাল উত্তরের জন্য একটি বৈধ পয়েন্ট (পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ) থাকে তবে খুব ভার্বোজ থাকে।
জ্যাক মিলার

1

আমি শুধু ইস্যুতে হোঁচট খেয়েছি। আমি না git rebase --skip কারণ git statusপরিষ্কারভাবে stagged পরিবর্তন, যা আমি রাখতে চেয়েছিলেন প্রদর্শন করুন। যদিও আমার কাছে কিছু অতিরিক্ত ফাইল ছিল যা অপ্রত্যাশিতভাবে এসেছিল। আমি সমাধান করেছি

git checkout .

স্ট্যাগস্ট্যাগ পরিবর্তনগুলি অপসারণ করতে, তারপর git rebase --continueসফল।


1

একবার আপনার পরিবর্তনগুলি স্থির করে আপনি 'গিট অ্যাড-এ' চালাতে ভুলে যেতে পারেন

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