স্থানীয় মুছে ফেলা গেলে গিট - সংশ্লেষের দ্বন্দ্ব কিন্তু ফাইল রিমোটে বিদ্যমান


116

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

গিট-মার্জ করার পরে এটি সংঘর্ষগুলি দেখা দেয়।

গিট গুই ব্যবহার করে এটি দেখায় যে স্থানীয় ফাইলটি মুছে ফেলা হয়েছে, যখন দূরবর্তী শাখার ফাইলটিতে সামগ্রী রয়েছে।

আপনি কীভাবে এই ফাইলগুলিকে দ্বন্দ্ব থেকে বিরত রাখবেন? গিট গুই ব্যবহার করার কি কোনও সহজ উপায় আছে?

অনেক ধন্যবাদ


অতীতে, আমি একটি কাজ করেছি তা হ'ল "মোছা" ফাইলগুলিকে উত্স নিয়ন্ত্রণে রেখে যাওয়া, তবে সেগুলি প্রকল্প / মেকফিল / যা কিছু হোক না কেন বাদ দিন। এটি অন্তত মার্জ সংঘাতগুলির জন্য একটি ঠিক আছে অস্থায়ী কর্মক্ষেত্র।
মার্ক রুশাকফ

2
আপনি যে কোনও মার্জ সংঘাত ঠিক করেছেন ঠিক সেভাবেই এটি ঠিক করুন: সূচীতে পছন্দসই সংস্করণ (ফাইল বা ফাইলের অভাব) যুক্ত করুন এবং তারপরে প্রতিশ্রুতিবদ্ধ। তুমি কোনটি চাও?
ক্যাসকেবেল


@ মারর্কুশাকফ আমি আপনার পরামর্শটি আবার জবাবদিহি করব "যখন যখন আমি সংঘাতের সমাধানের প্রয়োজন তখন আমি কেবল তাদের মুখোশটিই সমাধান করব না যাতে তারা ভবিষ্যতে কাউকে (সম্ভবত আমাকে নয়) কামড় দেয়"। প্রকল্পে আরও সমস্যা আনতে চান এমন ব্যক্তির পক্ষে এটি সত্যিই ভাল পরামর্শ।
ভিক্টর ইয়ারেমা

উত্তর:


155

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

git rm path/to/file

যদি ফাইলটি প্রকৃতপক্ষে এখনও ট্র্যাক করা উচিত হয় তবে এটি যুক্ত করুন (কাজের গাছের সংস্করণটি উত্স থেকে সংস্করণ হবে):

git add path/to/file

দ্বন্দ্ব সমাধানের জন্য যেকোন একটির করার পরে, সংহত হয়ে প্রতিশ্রুতিবদ্ধ।


আমার একাধিক ফাইল ছিল, সমস্ত একই ডিরেক্টরিতে এবং একই জিনিস প্রত্যয় সহ। দিরের বাকী ফাইলগুলি সংরক্ষণ করার সময় সেগুলি একবারে সরিয়ে দেওয়ার জন্য কি একটি শর্টকাট আছে?
chiborg

@ চিবার্গ: এটি কেবল একটি শেল প্রশ্ন। cdডিরেক্টরিতে, এবং git rm *.ext। আপনার শেল (গিট নয়) *.extসমস্ত মিলে যাওয়া ফাইলের নামের কাছে প্রসারিত ।
ক্যাসকেবেল

এবং আমি যদি কিছু ফাইল সংরক্ষণ করতে চাই? git rmকোন -iপতাকা আছে।
chiborg

@ সিবির্গ: আপনি বলেছিলেন যে আপনি একটি প্রত্যয় প্রত্যয় দিয়ে সমস্ত কিছু সরিয়ে ফেলতে চেয়েছিলেন এবং সমস্ত কিছু অক্ষত রেখে দিতে চান। আমি আপনাকে ঠিক কীভাবে করব তা বলেছি। না মানে git rm *-suffix.ext? একই পার্থক্য. শেল ওয়াইল্ডকার্ড কীভাবে ব্যবহার করবেন তা নির্ধারণ করতে আপনার যদি সমস্যা হয়, তবে unix.stackex بدل.com এ জিজ্ঞাসা করুন। আপনি যদি কোনও সত্যের জন্য জানেন তবে আপনি যা চান তা গ্লোব্বিংয়ের মাধ্যমে শেষ করা যায় না, মুছে ফেলার জন্য ব্যবহার করুন rm -iএবং অনুসরণ করুন git add -u
ক্যাসাবেল

2
@Jefromi, আমি যদি নির্দিষ্ট করছি -s recursive -X ours, কেন এটা এখনও করা প্রয়োজন git rmএবং git add?
নোয়েল ইয়াপ

27

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

git diff ...origin/master -- path/to/file

যদি এটি "তাদের দ্বারা মুছে ফেলা হয়" দৃশ্যমান হয় এবং আপনি পরিবর্তনগুলি দেখতে চান যাতে আপনি সেগুলি অন্য কোথাও প্রয়োগ করতে পারেন, আপনি ব্যবহার করতে পারেন:

git diff origin/master... -- path/to/file

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

8
অনুস্মারক হিসাবে: যখন রিবেসিংয়ের সময় সংঘাত ঘটে তখন এটি কাজ করে না । git diff mybranch@{1}...origin/master -- path/to/file
Nschum

@ আনছাম ধন্যবাদ! এটি ঠিক আমি যা খুঁজছিলাম is
চুইম

2
আপনি ব্যবহার করতে পারেন git diff --base(আমার অন্যান্য উত্তর দেখুন)।
ডোরিয়ান মার্চাল

হাই জোসেফ, এই উত্তরটি আশাব্যঞ্জক মনে হলেও আমি এখনও আটকে আছি। আপনার যদি একটি মুহূর্ত থাকে তবে আমি আপনার উত্তরটি এখানে দিতে পছন্দ করব: stackoverflow.com/q/63044843/470749 ধন্যবাদ!
রায়ান

9

গিট জিইউআইতে আপনি দ্বন্দ্বপূর্ণ ফাইলটি নির্বাচন করুন এবং তারপরে মূল পাঠ্য অঞ্চলে ডান ক্লিক করুন যেখানে বিবাদযুক্ত পাঠ্য প্রদর্শিত হবে।

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

এটি বের করার জন্য আমাকে এক মাস সময় নিয়েছে ... গিট জিইআইআই-তে আসলে ডকুমেন্টেশন থাকলে ভাল হত ...


4

সর্বাধিক রেট দেওয়া উত্তর দ্বন্দ্ব সমাধানের পথে ফোকাস করে।

তার আগে, আপনি সম্ভবত জানতে চান স্থানীয়ভাবে সরানো ফাইলগুলিতে রিমোটটি কী বদলেছে।

এটি করতে, আপনি এর সাথে পরিবর্তনগুলি দেখতে পাবেন:

git diff --base

Https://git-scm.com/docs/git-diff#Docamentation/git-diff.txt--1--base থেকে

"বেস" সংস্করণের সাথে কাজের গাছের তুলনা করুন [...]। সূচকগুলিতে কেবল নিমজ্জিত এন্ট্রিগুলির জন্য যেমন বিবাদগুলি সমাধান করার সময় এই পদক্ষেপগুলি রয়েছে।



0

ইজিট-এ আমিও সমস্যা পেয়েছি। আমার সমাধানটি ছিল:

  • গিট স্টেজিং ভিউ ব্যবহার করা হয়েছে।
  • তুলনামূলক খোলার জন্য স্টেজবিহীন পরিবর্তনগুলিতে প্রদর্শিত প্রতিটি ফাইলগুলিতে ডাবল ক্লিক করা হয়েছে
  • "বাম থেকে ডানে সমস্ত কপি করুন" আইকনে ক্লিক করুন
  • ফাইল সংরক্ষণ করুন (এটি স্টেস্ট না করা তালিকা থেকে অদৃশ্য হয়ে যাবে)

0

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

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