মার্জ হওয়ার পরে কমিট করার ক্ষেত্রে গিট ত্রুটি - মারাত্মক: মার্জ হওয়ার সময় আংশিক কমিট করতে পারে না


280

আমি একটি দৌড়ে git pullগিয়েছিলাম যা একটি বিরোধের মধ্যে শেষ হয়েছিল। আমি দ্বন্দ্ব সমাধান করেছি এবং এখন সবকিছু ঠিক আছে (আমি মার্জারুলও ব্যবহার করেছি)।

আমি যখন সমাধান করা ফাইলটির সাথে প্রতিশ্রুতিবদ্ধ git commit file.php -m "message"করি তখন ত্রুটিটি পাই:

fatal: cannot do a partial commit during a merge.

আমার আগে একই সমস্যা ছিল এবং প্রতিশ্রুতিবদ্ধতা ব্যবহার করে -aনিখুঁতভাবে কাজ করে। আমি মনে করি এটি সঠিক উপায় নয় কারণ আমি সমস্ত পরিবর্তন করতে চাই না। আমি পৃথক মন্তব্য দিয়ে পৃথক পৃথক ফাইল প্রতিশ্রুতিবদ্ধ করতে চাই। আমি এটা কিভাবে করবো? কেন গিট ব্যবহারকারীদের একীভূত হওয়ার পরে পৃথক পৃথকভাবে ফাইল প্রতিবেদন করতে দেয় না? আমি এই সমস্যার সন্তোষজনক উত্তর খুঁজে পাইনি।


5
এবং আপনি জানেন, গিট সম্পাদনা "সম্পূর্ণ প্রতিশ্রুতিবদ্ধ" জন্য অনুসন্ধান প্রায় কার্যকর কিছুই দেয় না। গিতের ম্যান পৃষ্ঠা থেকে কোনও প্রাসঙ্গিক নথি নয়। এটি এমন একটি দুর্বিষহ সরঞ্জাম।
jww

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

তুমি এটা কিভাবে করলে? আমার একটি বিরোধ আছে এবং আমি কিছুই করতে পারি না
নিক্লাস আর

উত্তর:


442

আমি খুঁজে পেয়েছি যে কমিট কমান্ডে "-i" যুক্ত করা আমার জন্য এই সমস্যাটি সমাধান করে। -আই মূলত এটি প্রতিশ্রুতি দেওয়ার আগে অতিরিক্ত ফাইল মঞ্চ করতে বলে। এটাই:

git commit -i myfile.php

18
কী Stage additional filesমানে?
jcalfi314

9
@ jcalfi314 গিট স্টেজিং প্রতিশ্রুতি জন্য ফাইল প্রস্তুত করা হয়। এই বিশেষ ক্ষেত্রে এটি প্রতিশ্রুতি দেওয়ার আগে কমান্ড লাইনের মাধ্যমে ফাইলটি পর্যায়ায়িত করে। -আই পতাকাটি বেশিরভাগ সময় ব্যবহার করা হয় আপনি যখন মার্জ শেষ করেন। আপনি এখানে কমিটের পতাকাগুলি সম্পর্কে আরও পড়তে পারেন ।
মিকায়েলহালেন

4
@ jcalfi314 আমি ডকুমেন্টেশন পরীক্ষা করে দেখেছি এবং এটিতে বলা হয়েছে "এখন পর্যন্ত মঞ্চস্থ বিষয়বস্তু বের করার আগে কম্যান্ড লাইনে প্রদত্ত পাথের বিষয়বস্তুগুলিও মঞ্চস্থ করুন This আপনি বিরোধী সংযুক্তি না শেষ না করলে আপনি সাধারণত এটি চান না" । আমার অনুমান যে এই অবস্থার অধীনে মঞ্চের স্থানে একধরণের অসঙ্গতি রয়েছে git addযা সমাধান করা যায় না , যা git commitব্যর্থ হয়ে যায় makes যোগ করা -iগিটকে একই সাথে যুক্ত করতে এবং প্রতিশ্রুতিবদ্ধ করতে বলত। আমি এখনও নিশ্চিত নই তবে কেন তা বোধ হয় বোধ হয়।
জোনস্লোসিএন

5
আমার মতো নুবুকের জন্য, আপনি যদি কোনও বার্তা চেষ্টা করেন যাতে উদ্ধৃতিবিহীন ফাঁকা স্থান অন্তর্ভুক্ত থাকে তবে আপনিও এই একই ত্রুটি পাবেন। যেমন। [গিট কমিট-মি এক দুই তিনজন] সঠিক: [গিট কমিট-এম "এক দুই তিন"]
স্কাইচান

2
@ স্কাইচের মন্তব্যটি ছিল আমার টিকিট।
তেহবার্ডোনে

106
git commit -am 'Conflicts resolved'

এটি আমার পক্ষে কাজ করেছে। আপনি এটি চেষ্টা করতে পারেন।


1
আশ্চর্য, আমি এই জানতাম না!
জ্যানভালজিয়ান

11
এটি প্রতিশ্রুতিবদ্ধ সমস্ত সংশোধিত ফাইল যুক্ত করে, এমনকী অচিহ্নবদ্ধ যা খুব পছন্দসই নয়। ব্যবহারকারীরা 'a' পতাকাটি ছাড়তে চাইতে পারেন
চেজ স্যান্ডম্যান অ্যাপ্রিল

4
এটি হ'ল ব্যবহারকারী যা করতে না করতে বলছেন, যা সমস্ত ফাইল প্রতিশ্রুতিবদ্ধ হওয়া এড়ানোর জন্য।
মাইকেল 21

33

আপনি git commit -iবেশিরভাগ ক্ষেত্রে ব্যবহার করতে পারেন তবে ক্ষেত্রে এটি কাজ করে না

আপনার করা দরকার git commit -m "your_merge_message"। মার্জ সংঘাত চলাকালীন আপনি একটি একক ফাইল মার্জ করতে পারবেন না যাতে আপনার প্রয়োজন

  1. শুধুমাত্র দ্বন্দ্বপূর্ণ ফাইল স্টেজ ( git add your_file.txt)
  2. git commit -m "your_merge_message"

16

আপনি সম্ভবত এমন কোনও বিষয়ে দ্বন্দ্ব পেয়েছিলেন যা আপনি প্রতিশ্রুতি দেওয়ার জন্য শুরু করেন নি। গিট আপনাকে স্বাধীনভাবে জিনিসগুলি কমিট করতে দেয় না (কারণ এটি একীভূত করার সমস্ত অংশ, আমার ধারণা), সুতরাং আপনাকে git addসেই ফাইলটি করা দরকার এবং তারপরেও git commit -m "Merge conflict resolution"। এর -iজন্য পতাকাটি আপনার জন্য git commitঅ্যাড করে।


5
1.9.0 এ commit -iনয়git add; git commit
লিগি

14

যখন আমি -mগিট একীভূত বিরোধ নিষ্পত্তি করার সময় আমার গিট কমিটের কথা ভুলে গিয়েছিলাম তখন আমি এটি পেয়েছি ।

git commit "commit message"

হতে হবে

git commit -m "commit message"

2
আহ আহ! আমি আবার ভুলে গেছি!
ব্যবহারকারী2705463

9

ত্রুটি বার্তাটি যেমন বলেছে আপনি মার্জ হওয়ার পরে আংশিক প্রতিশ্রুতি করতে পারবেন না। কেবল file.phpপ্রতিশ্রুতিবদ্ধ না করে আপনার সমস্ত পরিবর্তন করা উচিত।

এই কাজ করা উচিত.

git commit -m "Fixing merge" 

ধন্যবাদ, এটি সহায়তা করেছে
নরেন্দ্র পান্ডে

আমার পক্ষে যেমনটি হয়েছে তেমন কাজ করেছেন
শশাঙ্ক বোদখে

6

আপনার মার্জটি ক্রিয়াটির মাঝখানে থামল। আপনার ফাইলগুলি যুক্ত করা উচিত এবং তারপরে 'গিট কমিট' করা উচিত:

git add file_1.php file_2.php file_3.php git commit

চিয়ার্স


5

আপনি যদি পুরো চেরি-বাছাই করতে চান এবং যে কোনও সেটে ফাইলগুলি প্রতিশ্রুতিবদ্ধ করতে চান,

git reset --soft <ID-OF-THE-LAST-COMMIT>

তোমাকে সেখানে পেয়ে যায়

কি সফট রিসেটটি হ'ল এটি হ'ল পয়েন্টারটি বর্তমান হেডের প্রতিশ্রুতিবদ্ধ প্রতিশ্রুতি (ইশ) এ সরিয়ে দেয় তবে ফাইলগুলিতে কোনও পরিবর্তন হয় না। হার্ড রিসেট পয়েন্টারটি সরিয়ে নিয়ে যায় এবং সেই প্রতিশ্রুতিতে সমস্ত ফাইলকে রাজ্যে ফিরিয়ে দেয় (ইস)। এর অর্থ সফ্ট রিসেটের সাহায্যে আপনি মার্জ স্থিতি সাফ করতে পারেন তবে প্রকৃত ফাইলগুলিতে পরিবর্তনগুলি রাখতে পারেন এবং তারপরে প্রতিটি নিজের পছন্দ অনুযায়ী প্রতিশ্রুতিবদ্ধ বা পুনরায় সেট করতে পারেন।


আপনি এই আরও ব্যাখ্যা করতে পারেন? এটি সম্ভবত আমার প্রয়োজন, তবে এটি কীভাবে কাজ করবে তা আমি অনুসরণ করি না ... এখানে সমস্ত উত্তর কেবল 'ফাইল যুক্ত করুন, তারপরে প্রতিশ্রুতিবদ্ধ করুন!', তবে এটি তুচ্ছ স্পষ্ট; আমি এখানে আসার কারণটি আমি প্রতিশ্রুতিবদ্ধ হওয়ার আগে এই ফাইলগুলি যুক্ত করতে চাই না। -_-;
কাইল বেকার

যে সাহায্য করে। ধন্যবাদ। :)
কাইল বেকার

5
  1. আপনার প্রকল্প ডিরেক্টরিতে যান
    1. লুকানো ফাইলগুলি প্রদর্শন করুন (.git ফোল্ডার প্রদর্শিত হবে)
    2. .git ফোল্ডার খুলুন
    3. MERGE_HEAD সরান
    4. আবার প্রতিশ্রুতিবদ্ধ
    5. যদি গিট আপনাকে বলে যে গিটটি লক হয়েছে তবে .git ফোল্ডারে ফিরে যান এবং সূচি.লক সরান
    6. আবার প্রতিশ্রুতিবদ্ধ সবকিছু এই সময় ভাল কাজ করবে।

গ্রেট! এটা আমার জন্য কাজ করবে। ম্যাকোএসে যাইহোক, টার্মিনাল থেকে আপনি "ওপেন .গিট" কল করতে পারেন, ডাইনি ফাইন্ডারে '.git' সামগ্রী প্রদর্শন করবে
tontonCD

এটি আমার পক্ষেও কাজ করে। এটি উত্তর হিসাবে গ্রহণ করা উচিত।
ভান্দু

3

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


1
ধন্যবাদ, তবে দুর্ভাগ্যক্রমে এটি আমার পক্ষে কার্যকর হয়নি। বিরক্তিকরভাবে, আমাকে মার্জ করার আগে আমাকে ভিউ-প্রাইভেটের পাশাপাশি মার্জ করতে হয়েছিল it
কাকি

3

আমি কেবল এক্সকোডের সোর্স কন্ট্রোল ব্যবহার করে একে একে সম্পূর্ণ ভিন্ন পদ্ধতির সাথে সমাধান করেছি ।

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

গাছের সংঘাতের স্ক্রিনশট

এক্সকোড ব্যবহার করে সংশোধন করা প্রায় অসম্ভব বলে আমি .xcodeprojগিট সার্ভার থেকে ডাউনলোড সংস্করণ দিয়ে ফাইলটি প্রতিস্থাপন করেছি । ফলাফল ... এক্সকোড প্রকল্পটি সাফ হয়ে উঠল, তবে দুর্নীতিগ্রস্ত পুলের সমস্ত আপডেটগুলি আমার পরিবর্তনগুলি হিসাবে প্রদর্শিত হয়েছিল এবং এটি ছিল একটি প্রতিশ্রুতিবদ্ধ হওয়ার জন্য স্টেজড।

এই সমস্ত মোড এবং যুক্ত ফাইলগুলি দেখুন Look

তবে প্রতিশ্রুতি দেওয়ার চেষ্টা করার সময়, আমি একই "মারাত্মক: একীকরণের সময় একটি আংশিক প্রতিশ্রুতি করতে পারি না" ত্রুটিটি পেয়েছি, এখানে আলোচনা করা হয়েছে।

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

আমাকে কীভাবে জিজ্ঞাসা করবেন না, আমি কেবল যা বর্ণনা করেছি তার বাইরে ... এবং আমি যে শূন্যস্থানগুলি রেখেছি তা অবশ্যই পূরণ করুন। আমি এতে নতুন এবং আমি সবকিছু বুঝতে পারি না। সম্ভবত কোনও অভিজ্ঞ প্রোগ্রামার অপ্রাসঙ্গিক তথ্য প্রাসঙ্গিক থেকে আলাদা করতে পারেন এবং এই কৌশলটি আরও স্পষ্ট করে পুনরায় তৈরি করতে পারেন, যা এই কারণেই আমি এই পোস্ট করছি।

এটি সদৃশ প্রশ্নের একটি সদৃশ জবাব যেমন: ব্যর্থ এক্সকোড গিট মার্জ আটকে আছে


2
সদৃশ উত্তর পোস্ট করবেন না। অন্তর্নিহিত সমস্যাটি একই রকম হতে পারে তবে আপনার উত্তরটি আরও নির্দিষ্ট সমস্যার জন্য এবং কেবলমাত্র এই সাধারণ প্রশ্নের উত্তরগুলিকেই ক্লাউড করে। আমি মনে করি এই ক্ষেত্রে আপনি যে প্রশ্নের সাথে আপনার মূল উত্তরটির সাথে লিঙ্ক করেছেন তার একটি মন্তব্য আরও উপযুক্ত।
ফুচাচু

2

একীভূত হওয়ার সময় গিট বিভিন্ন কারণে প্যারেন্ট শাখাগুলির উপর নজর রাখতে চায়। আপনি যা করতে চান তা গিট যেমন দেখায় তেমন একীকরণ নয়। আপনি সম্ভবত একটি রিবেস বা চেরি-পিক নিজেই করতে চাইবেন।


1
আমি আগে কখনও রিবেস বা চেরি-পিক ব্যবহার করিনি, আমি এখনই ম্যানুয়ালটি দিয়ে চলেছি, তাহলে বিরোধিতাগুলি সংঘর্ষের পরে "গিট রিবেস মাস্টার" কী কাজ করবে?
পিএমান

1
এটি একটি সমান্তরাল কর্মপ্রবাহ। মূলত স্ট্যাকওভারফ্লো / সিকিউশনস / ৮০৪115/git-rebase-vs-git- विसর দেখুন , যদি আপনি "মার্জ" আলাদা করতে চান তবে পরিবর্তে লক্ষ্য শাখার শেষের দিকে উত্স শাখাটি পুনরায় চালু করুন।
টালজো

1
কেবল গিট প্রতিটি পৃথক ফাইল যুক্ত করুন তারপরে -a ছাড়াই প্রতিশ্রুতিবদ্ধ।
পিটার ডিউইজ

4
আপনি আসলে প্রশ্নের উত্তর দেননি বরং অনুসন্ধানের জন্য আরও কিছু দিয়েছেন। এখন আমাদের "চেরি পিকিং কী" এবং "কি রিবেস" তা জানতে হবে।
ftrotter

2
আমি উত্তর দিচ্ছি কেন এই উত্তরটি নিচে ভোট দেওয়া হয়েছিল। আমার কাছে সবসময় শিশুর কৌতূহল থাকে যখন কেউ আমাকে এমন জিনিস বলে যা আমি আগে কখনও জানতাম না। আমি উপরে মন্তব্য হিসাবে, এখন আমি চেরি পিক এবং রিবেস সম্পর্কে জানি। যে প্রগতিশীল / সহায়ক ছিল না?
pMan

2

git commit -i -m 'merge message'আমার জন্য কাজ করেনি। এটি বলেছিল:

fatal: No paths with --include/--only does not make sense.

এফডাব্লুআইডাব্লু, আমি এই সম্পর্কিত প্রশ্নের মাধ্যমে এখানে পৌঁছেছি কারণ আমি এই বার্তাটি পেয়েছিলাম :

fatal: You have not concluded your merge (MERGE_HEAD exists).

আমি মার্জারুলও চেষ্টা করেছিলাম, যা বলেছিল No files need merging। খুবই বিভ্রান্তিকর! সুতরাং MERGE_HEAD এমন কোনও ফাইলে নেই যা মার্জ করার দরকার আছে ??

অবশেষে, আমি এই কৌশলটি কেবলমাত্র পরিবর্তিত ফাইলগুলি যুক্ত করতে ব্যবহার করেছি (আমার গাছের সমস্ত ফাইল যুক্ত করতে চাইনি, যেহেতু আমার কিছু রয়েছে যাতে আমি তালাবিহীন রাখতে চাই):

git ls-files -m | xargs git add

তারপরে আমি অবশেষে (!) প্রতিশ্রুতিবদ্ধ এবং ধাক্কা দিতে সক্ষম হয়েছি। এই পরিস্থিতিতে গিটটি আপনাকে কী করতে হবে সে সম্পর্কে আরও ভাল ইঙ্গিত দিলে এটি অবশ্যই ভাল।


1

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


1

সব মন্তব্য পড়ার পরে। এটি আমার রেজোলিউশন
ছিল: প্রতিশ্রুতির চেয়ে আমাকে আবার এটি যুক্ত করতে হয়েছিল:

$ git commit -i -m support.html "doit once for all" [master 18ea92e] support.html

1

আপনি যদি সোর্স ট্রি বা অন্যান্য জিইউআই ব্যবহার করে থাকেন তবে নিশ্চিত করুন যে সমস্ত ফাইল চেক করা হয়েছে (মার্জ হওয়ার পরে)।


0

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

এখন আপনি যদি জারি করেন,

git status Lib/MyFile.php

আপনি আউটপুট মত দেখতে পাবেন

On branch warehouse
Your branch and 'origin/warehouse' have diverged,
and have 1 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:

    modified:   Lib/MyFile.php

যেহেতু, আপনি ইতিমধ্যে প্রতিশ্রুতিবদ্ধ করেছিলেন, আপনার কেবল ইস্যু করা দরকার

git commit

এবং আপনার প্রতিশ্রুতি কোনও সমস্যা ছাড়াই সম্পন্ন করা হবে।

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