আপনার গিট ডিফ্টল এবং মার্জেটুল হিসাবে মেল্ড সেট আপ এবং ব্যবহার করছেন


255

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

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

মাইল্ড একটি জনপ্রিয় ফ্রি, ওপেন সোর্স এবং ক্রস প্ল্যাটফর্ম ( ইউএনআইএক্স / লিনাক্স, ওএসএক্স, উইন্ডোজ) পছন্দ হিসাবে স্ট্যাকওভারফ্লো প্রশ্নটিতে দেখানো হয়েছে, গিটের জন্য সেরা ভিজ্যুয়াল মার্জিং সরঞ্জামটি কী? , যাতে উত্তর প্রস্তাবিত উত্তরটির অন্য সরঞ্জাম হিসাবে 3 গুণ বেশি ভোট রয়েছে।

নিম্নলিখিত 2 টি প্রশ্নের উত্তর আমার নীচে দেওয়া হবে:

  • আমি কীভাবে সেট করতে এবং আমার গিট ডিফ্টল হিসাবে মেল্ড ব্যবহার করব?
  • আমি কীভাবে আমার গিট মার্জটুল হিসাবে মেল্ড সেট আপ করব এবং ব্যবহার করব?

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


1
সম্পর্কিত পোস্ট - গিটের সাধারণভাবে কীভাবে একটি ডিফ সরঞ্জামের কনফিগার করতে হয় ।
আরবিটি

উত্তর:


423

আমি কীভাবে সেট করতে এবং আমার গিট ডিফ্টল হিসাবে মেল্ড ব্যবহার করব?

গিট ডিফ্টল আপনার টার্মিনালে পৃথক আউটপুট প্রদর্শন করার পরিবর্তে জিইউআই প্রোগ্রাম (অর্থাত্ মেল্ড) ব্যবহার করে ডিফটি প্রদর্শন করে।

যদিও আপনি -t <tool> / --tool=<tool>এটি ব্যবহার করে কমান্ড লাইনে জিইউআই প্রোগ্রাম সেট করতে পারেন এটি আপনার .gitconfigফাইলে এটি কনফিগার করতে আরও বোধগম্য । [দ্রষ্টব্য: নীচে নীচে অবস্থিত উদ্ধৃতি এবং উইন্ডোজ পাথ সম্পর্কে বিভাগগুলি দেখুন]]

# Add the following to your .gitconfig file.
[diff]
    tool = meld
[difftool]
    prompt = false
[difftool "meld"]
    cmd = meld "$LOCAL" "$REMOTE"

[দ্রষ্টব্য: এই সেটিংসটি git diffস্বাভাবিক হিসাবে চলতে থাকবে এমন আচরণের কোনও পরিবর্তন করে না ]]

আপনি git difftoolযেমন ব্যবহার করেন ঠিক তেমনভাবে ব্যবহার করুন git diff। যেমন

git difftool <COMMIT_HASH> file_name
git difftool <BRANCH_NAME> file_name
git difftool <COMMIT_HASH_1> <COMMIT_HASH_2> file_name

যদি সঠিকভাবে কনফিগার করা হয় তবে একটি GUI ইন্টারফেস ব্যবহার করে বৈদ্যুতিন প্রদর্শন প্রদর্শন উইন্ডোটি খুলবে।

মেশানো গুই উইন্ডো ফলকে আদেশ আদেশ দ্বারা নিয়ন্ত্রণ করা যায় $LOCALএবং $REMOTEএর মধ্যে cmd, যা ফাইল ডান ফলকে বাম পেইন এবং যা দেখানো হয় বলতে হয় যে। আপনি যদি অন্য উপায়ে তাদের দেখতে চান তবে কেবল তাদের চারপাশে এইভাবে অদলবদল করুন:

    cmd = meld "$REMOTE" "$LOCAL"

শেষ prompt = falseঅবধি লাইনটি আপনাকে গল্ডটি কেবল মেল্ড চালু করতে চায় কিনা তা জিজ্ঞাসা করা থেকে বিরত রাখে, ডিফল্টরূপে গিট একটি প্রম্পট দেবে।


আমি কীভাবে আমার গিট মার্জটুল হিসাবে মেল্ড সেট আপ করব এবং ব্যবহার করব?

গিট মার্জেটুল আপনাকে মার্জ করার সময় সংঘটিত সংঘাতগুলি সমাধান করতে একটি জিইউআই মার্জ প্রোগ্রাম (অর্থাত্ মেল্ড) ব্যবহার করার অনুমতি দেয়।

ডিফ্টল এর মতো আপনি জিইউআই প্রোগ্রামটি কমান্ড লাইনে ব্যবহার করে সেট করতে পারেন -t <tool> / --tool=<tool>তবে আগের মতো এটি আপনার .gitconfigফাইলে এটি কনফিগার করা আরও বোধগম্য । [দ্রষ্টব্য: নীচে নীচে অবস্থিত উদ্ধৃতি এবং উইন্ডোজ পাথ সম্পর্কে বিভাগগুলি দেখুন]]

# Add the following to your .gitconfig file.
[merge]
    tool = meld
[mergetool "meld"]
    # Choose one of these 2 lines (not both!) explained below.
    cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"
    cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED"

আপনি git mergetoolপ্রকৃত মার্জ সম্পাদন করতে ব্যবহার করবেন না । git mergetoolআপনি ব্যবহারের আগে গিটের সাথে সাধারণ উপায়ে মার্জ করে perform যেমন

git checkout master
git merge branch_name

যদি একত্রিত হয় তবে সংঘাতের গিটটি এরকম কিছু প্রদর্শন করবে:

$ git merge branch_name
Auto-merging file_name
CONFLICT (content): Merge conflict in file_name
Automatic merge failed; fix conflicts and then commit the result.

এই মুহুর্তে file_nameএকত্রীকরণ দ্বন্দ্ব তথ্য দিয়ে আংশিকভাবে মার্জ ফাইল উপস্থিত থাকবে (যে সব ফাইল >>>>>>>এবং <<<<<<<এটি এন্ট্রি)।

মার্জটুল এখন মার্জ সংঘাতগুলি সমাধান করতে ব্যবহার করা যেতে পারে। আপনি এটি দিয়ে খুব সহজেই এটি শুরু করুন:

git mergetool

যদি কোনও মেল্ড উইন্ডোটি সঠিকভাবে কনফিগার করা থাকে তবে 3 টি ফাইল প্রদর্শিত হবে। প্রতিটি ফাইল তার জিইউআই ইন্টারফেসের একটি পৃথক ফলকে অন্তর্ভুক্ত থাকবে।

.gitconfigউপরের উদাহরণ এন্ট্রিতে, 2 টি লাইনটি লাইন হিসাবে প্রস্তাবিত [mergetool "meld"] cmd। প্রকৃতপক্ষে উন্নত ব্যবহারকারীদের জন্য cmdলাইনটি কনফিগার করার জন্য সমস্ত ধরণের উপায় রয়েছে তবে এটি এই উত্তরের আওতার বাইরে।

এই উত্তরে 2 টি বিকল্প cmdলাইন রয়েছে যা তাদের মধ্যে বেশিরভাগ ব্যবহারকারীর জন্য পূরণ করবে এবং উন্নত ব্যবহারকারী যারা এই সরঞ্জামটিকে জটিলতার পরবর্তী স্তরে নিয়ে যেতে ইচ্ছুক তাদের জন্য এটি একটি সূচনা পয়েন্ট হবে।

প্রথমত এখানে প্যারামিটারগুলির অর্থ কী:

  • $LOCAL বর্তমান শাখায় ফাইল (যেমন মাস্টার)।
  • $REMOTE ব্রাঞ্চে থাকা ফাইলটি কী একীভূত হচ্ছে (উদাঃ ব্রাঞ্চ_নাম)।
  • $MERGED এটিতে একত্রিত হওয়া সংঘাতের তথ্যের সাথে আংশিকভাবে মার্জ করা ফাইল।
  • $BASEএর ভাগ করা কমিট পূর্বপুরুষ $LOCALএবং $REMOTE, এটি ফাইলটি এমনভাবে বলা উচিত যখন ধারণকৃত শাখাটি $REMOTEমূলত তৈরি হয়েছিল।

আমি আপনাকে প্রস্তাব ব্যবহার করুন:

[mergetool "meld"]
    cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"

বা:

[mergetool "meld"]
    cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED"
    # See 'Note On Output File' which explains --output "$MERGED".

পছন্দ ব্যবহার করা হবে কিনা হয় $MERGEDবা $BASEমধ্যবর্তী $LOCALএবং $REMOTE

যে কোনও উপায়ে মেল্ড বাম এবং ডান প্যানে সহ $LOCALএবং 3 বা ত্রি প্রদর্শন করবে or$REMOTE$MERGED$BASE মধ্যম ফলকে।

উভয় ক্ষেত্রে মাঝের ফলকটি সেই ফাইল যা আপনার একত্রিত হওয়া বিরোধগুলি সমাধান করার জন্য সম্পাদনা করা উচিত। পার্থক্য কেবলমাত্র সম্পাদনা অবস্থানটি আপনি পছন্দ করতে চান ঠিক তেমন; $MERGEDফাইল যা একত্রীকরণ দ্বন্দ্ব তথ্য দিয়ে বা আংশিকভাবে মার্জ ফাইল আছে জন্য $BASEভাগ পূর্বপুরুষ কমিট জন্য $LOCALএবং $REMOTE। [যেহেতু উভয় cmdলাইনই কার্যকর হতে পারে আমি সেগুলি উভয়ই আমার .gitconfigফাইলে রাখি । বেশিরভাগ সময় আমি $MERGEDলাইনটি ব্যবহার করি এবং $BASEরেখাটি মন্তব্য করা হয়, তবে আমি যদি তার $BASEপরিবর্তে লাইনটি ব্যবহার করতে চাই তবে মন্তব্য করা সরিয়ে নেওয়া যায় ]]

আউটপুট ফাইল উপর নোট: চিন্তা করবেন না যে --output "$MERGED"ব্যবহার করা হয় cmdকিনা নির্বিশেষে $MERGEDবা $BASEআগের ব্যবহৃত হয় cmdলাইন। --outputবিকল্প কেবল মেশানো কি ফাইলের নাম Git উদ্ধার পেতে হলে দ্বন্দ্ব রেজল্যুশন ফাইল চায় বলে। মেশানো কিনা আপনি ব্যবহার নির্বিশেষে যে ফাইল আপনার দ্বন্দ্ব সম্পাদনাগুলি সংরক্ষণ করতে হবে $MERGEDবা $BASEআপনার শুরু করা হচ্ছে সম্পাদন করা পয়েন্ট হিসেবে।

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

গিটটি .origমূল ফাইলের নামটিতে যুক্ত করে এতে মার্জ বিরোধের তথ্যের সাথে আংশিকভাবে মার্জ করা ফাইলটির ব্যাকআপ তৈরি করবে । যেমন file_name.orig। আপনি একীভূত হওয়ার সাথে সন্তুষ্ট এবং আপনি যে পরীক্ষা করতে চান তা চালানোর পরে, .origফাইলটি মোছা যায়।

এই মুহুর্তে আপনি এখন পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করতে পারেন।

যদি আপনি মেল্ডে মার্জ সংঘাতগুলি সম্পাদনা করার সময়, আপনি মেল্ডের ব্যবহারটি পরিত্যাগ করতে চান, তবে মাঝের ফলকে মেশানো রেজোলিউশন ফাইলটি সংরক্ষণ না করেই মেল্ডটি প্রস্থান করুন। গিট বার্তার সাথে প্রতিক্রিয়া জানাবে file_name seems unchangedএবং তারপরে জিজ্ঞাসা করবে Was the merge successful? [y/n], আপনি যদি উত্তর দেন nতবে মার্জ সংঘাতের সমাধান বাতিল হয়ে যাবে এবং ফাইলটি অপরিবর্তিত থাকবে। মনে রাখবেন যে আপনি যদি কোনও মুহুর্তে মেল্ডে ফাইলটি সংরক্ষণ করেন তবে আপনি গিট থেকে সতর্কতা এবং প্রম্পট পাবেন না। [অবশ্যই আপনি কেবল ফাইলটি মুছতে এবং এটি .origআপনার জন্য তৈরি গিট ব্যাকআপ ফাইলের সাথে প্রতিস্থাপন করতে পারেন ]]

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

এটি সরাসরি প্রকল্পে git mergetoolব্যবহারের আগে এর ব্যবহার পরীক্ষা করার জন্য একটি ডামি প্রকল্প তৈরি করা বুদ্ধিমানের কাজ হবে । আপনার টেস্টে কোনও স্থান সহ একটি ফাইলের নাম ব্যবহার করতে ভুলবেন না, যদি আপনার ওএসের লাইনে থাকা উদ্ধৃতিগুলি থেকে রক্ষা পাওয়ার প্রয়োজন হয় তবে নীচে দেখুন।cmd


পালিয়ে থাকা উদ্ধৃতি অক্ষর

কিছু অপারেটিং সিস্টেমে cmdপলাতক উদ্ধৃতি থাকা দরকার । কম অভিজ্ঞ ব্যবহারকারীদের মনে রাখা উচিত যে কনফিগারেশন কমান্ড লাইনগুলি ফাঁকা অন্তর্ভুক্ত ফাইলের সাথে পরীক্ষা করা উচিত, এবং যদি cmdলাইনগুলি ফাঁকা অন্তর্ভুক্ত ফাইলের সাথে কাজ না করে তবে উদ্ধৃতিগুলি থেকে বেরিয়ে যাওয়ার চেষ্টা করুন। যেমন

cmd = meld \"$LOCAL\" \"$REMOTE\"

কিছু ক্ষেত্রে আরও জটিল উদ্ধৃতি পলায়নের প্রয়োজন হতে পারে। নীচের উইন্ডোজ পাথের লিঙ্কগুলির মধ্যে প্রথমটিতে প্রতিটি উদ্ধৃতি ট্রিপল-পলায়নের উদাহরণ রয়েছে। এটি একটি বিরক্তিকর তবে কখনও কখনও প্রয়োজনীয়। যেমন

cmd = meld \\\"$LOCAL\\\" \\\"$REMOTE\\\"

উইন্ডোজ পাথ

উইন্ডোজ ব্যবহারকারীদের সম্ভবত মেল্ড cmdলাইনগুলিতে অতিরিক্ত কনফিগারেশন যুক্ত করতে হবে । meldcকমান্ড লাইন থেকে উইন্ডোজে ডাকা ডিজাইনের জন্য ডিজাইন করা তাদের পুরো পথটি ব্যবহার করার প্রয়োজন হতে পারে , বা তাদের প্রয়োজন হতে পারে বা একটি র‌্যাপার ব্যবহার করতে পারে। তাদের নীচের লিঙ্কযুক্ত স্ট্যাকওভারফ্লো পৃষ্ঠাগুলি পড়া উচিত যা cmdউইন্ডোজের জন্য সঠিক মেল্ড লাইন সেট করার বিষয়ে । আমি যেহেতু লিনাক্স ব্যবহারকারী তাই আমি বিভিন্ন উইন্ডোজ cmdলাইন পরীক্ষা করতে অক্ষম এবং মেলডে একটি পুরো পথ যুক্ত করার সাথে আমার উদাহরণগুলি ব্যবহার meldcকরার বা আপনার ক্ষেত্রে মেল্ড প্রোগ্রাম ফোল্ডার যুক্ত করার প্রস্তাব দেওয়ার ব্যতীত এই বিষয়ে আর কোনও তথ্য নেই path

মাইল্ডের সাথে চলমান সাদা স্থান উপেক্ষা করা

মাঠের বেশ কয়েকটি পছন্দ রয়েছে যা জিইউআইতে কনফিগার করা যায়।

অগ্রাধিকার Text Filtersট্যাবটিতে মতবিরোধের মতো বিষয়গুলিকে উপেক্ষা করার জন্য কয়েকটি কার্যকর ফিল্টার রয়েছে যখন কোনও ভিন্নতা প্রদর্শন করে। যদিও উপেক্ষা করার জন্য ফিল্টার রয়েছে All whitespaceএবং Leading whitespace, কোনও উপেক্ষা Trailing whitespaceফিল্টার নেই (এটি মেল্ড মেলিং তালিকায় সংযোজন হিসাবে প্রস্তাবিত হয়েছে তবে আমার সংস্করণে এটি উপলভ্য নয়)।

পৃষ্ঠপোষকতার সাদা স্থানটিকে উপেক্ষা করা প্রায়শই দরকারী, বিশেষত যখন সহযোগিতা করার সময় এবং মাইল্ড পছন্দ Text Filtersট্যাবটিতে একটি সাধারণ নিয়মিত প্রকাশের সাহায্যে ম্যানুয়ালি সহজেই যুক্ত করা যায় ।

# Use either of these regexes depending on how comprehensive you want it to be.
[ \t]*$
[ \t\r\f\v]*$

আমি আশা করি এটি প্রত্যেককে সহায়তা করে।


2
ধন্যবাদ, যে এত সহজে ব্যবহারযোগ্য করতে [mergetool "meld"] cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"মধ্যে ~/.gitconfigহয় তাহলে, শুধুমাত্র দ্বন্দ্ব মধ্যম প্যান মধ্যে লাল হাইলাইট সমাধান এবং সংরক্ষণ করুন! এটি ডিফল্ট সেটিংস হওয়া উচিত।
ক্রিসওয়েডদেভ

1
$LOCAL $MERGED $REMOTEআমি বেশিরভাগ সময় যে সেটিংটি ব্যবহার করি তা হ'ল যখন এটির সমাধানের জন্য মাত্র কয়েকটি দ্বন্দ্ব রয়েছে এবং এটি আমার ডিফল্টও। $LOCAL $BASE $REMOTEসত্যিই তার নিজের মধ্যে আসে যখন অনেক কিছুই করার থাকে এবং আপনি ঠিক জানেন যে কোডের কোন বিভাগটি কোন ফাইল থেকে আসছে; ভাগ্যবদ্ধ প্রতিশ্রুতি পূর্বপুরুষ একটি দুর্দান্ত বিশৃঙ্খলা মুক্ত শুরুর পয়েন্ট হতে পারে, কখনও কখনও সংঘাতের হাইলাইটটি আসলে পথে আসে এবং ক্লিনার ভিত্তি একটি আশীর্বাদ।
ম্যাটসেট

4
দ্রষ্টব্য: আপনি যদি =cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output="$MERGED"
ওএসএক্সে থাকেন এবং হোমব্রিউয়ের মাধ্যমে মেল্ড

2
ম্যাক ব্যবহারকারীরা যারা .dmg ইনস্টল করেছেন এবং খুঁজে পান যে 'মেল্ড' তাদের পথে নেই, এখানে নির্দেশাবলীর বিকল্প সেট অনুসরণ করতে ভুলবেন না: yousseb.github.io/meld
কেসি

3
এটি গিট কনফিগারেশনের ব্যাখ্যার চেয়ে অনেক ভাল - গিট মার্জেটুল । বিশেষত $ মার্জড এবং $ বেসের মধ্যে পার্থক্যটি ব্যাখ্যা করার জন্য আপনাকে অনেক ধন্যবাদ। আমাকে পাগল হতে বাঁচায়!
ক্রিসজি

81

অন্য উত্তরটি সঠিক হলেও, এখানে কেবল এগিয়ে যাওয়ার এবং মোল্ডকে আপনার ভিজ্যুয়াল ডিফ সরঞ্জাম হিসাবে কনফিগার করার দ্রুততম উপায়। কেবল এটি অনুলিপি / আটকান:

git config --global diff.tool meld
git config --global difftool.prompt false

এখন git difftoolএকটি ডিরেক্টরিতে চালান এবং প্রতিটি বিভিন্ন ফাইলের জন্য মেল্ড চালু করা হবে।

সাইড নোট: মেশানো আশ্চর্যজনক ধীর CSV ফাইল তুলনা এ, এবং কোন লিনাক্স পরিবর্তন টুল আমি পেয়েছি যতো তাড়াতাড়ি এই Windows টুল বলা হয় এটি তুলনা! (সর্বশেষ ২০১০ সালে আপডেট হয়েছে)।


13
আপনি সম্ভবত git config --global difftool.meld.cmd 'meld "$LOCAL" "$REMOTE"'সেখানে একটি লাইন চান । এই "ডিফল্ট", কিন্তু আপনি কনফিগার যত তাড়াতাড়ি একটি mergetool,difftool ডিফল্ট হিসাবে mergetool কনফিগারেশন ব্যবহার করা হয় তবে পরিবর্তন কনফিগ পাওয়া না গেলে শুরু হবে। যেহেতু মার্জটি 3-উপায় সংযুক্তির জন্য তিনটি ফাইল পাস করার জন্য কনফিগার করা থাকে, এর অর্থ হ'ল আপনার meld ডিফ উইন্ডোটিতে হঠাৎ করে তিনটি প্যান থাকবে যা কোনও অর্থ দেয় না।
BeeOnRope

কেন কনফিগারেশন চেক করবেন না, :17 গিট কনফিগারেশন
-২

56

উইন্ডোজ জন্য । গিট বাশে এই আদেশগুলি চালান:

git config --global diff.tool meld
git config --global difftool.meld.path "C:\Program Files (x86)\Meld\Meld.exe"
git config --global difftool.prompt false

git config --global merge.tool meld
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe"
git config --global mergetool.prompt false

(আপনার যদি আলাদা হয় তবে মেল্ড.এক্সির জন্য ফাইলের পাথ আপডেট করুন))

লিনাক্সের জন্য । গিট বাশে এই আদেশগুলি চালান:

git config --global diff.tool meld
git config --global difftool.meld.path "/usr/bin/meld"
git config --global difftool.prompt false

git config --global merge.tool meld
git config --global mergetool.meld.path "/usr/bin/meld"
git config --global mergetool.prompt false

আপনি এই কমান্ডটি ব্যবহার করে মেল্ডের পথ যাচাই করতে পারবেন:

which meld

1
আমি গিট ডিফ্টলটি চালালে আমার একটি ত্রুটি হয়েছিল "" ডিফ সরঞ্জাম সরঞ্জাম মেল্ডটি 'ডি: \ সফ্টওয়্যার \ মেল্ডডিফ \ মেল্ড.এক্সই' হিসাবে পাওয়া যায় না "
অ্যালেন ভর্ক

@ অ্যালেনভর্ক: আপনি কি নিশ্চিত করেছেন যে আপনার নির্দিষ্ট করা ফোল্ডারে মেল্ড.এক্সই রয়েছে? আপনি কি এটি গিটের বাইরে সফলভাবে চালাতে পারবেন? আপনি দৌড়ালে গিট কী ফিরে আসবে git config --global --get-regex diff*?
মারেডচিজ

আমি এটি সমাধান। আমি এটিকে "ডি: /software/melddiff/Meld.exe" এ পরিবর্তন করি এবং এটি কাজ করে।
অ্যালেন ভর্ক

এটি করা হয় নি উচিত: git config --global difftool.meld.path "C:\Program Files (x86)\Meld\Meld.exe"?
জোনাথন রোজেন

অ্যালেনভর্ক, আপনি কি সাইগউইনের জন্য গিট ব্যবহার করছেন?
অ্যাড্রিয়ান

25

আমি পৃথক কমান্ড হিসাবে মেল্ট সেটআপ করতে পছন্দ করি:

git config --global alias.meld '!git difftool -t meld --dir-diff'

এটি এটিকে এখানে git-meld.pl স্ক্রিপ্টের অনুরূপ করে তোলে: https://github.com/wmanley/git-meld

তারপরে আপনি কেবল চালাতে পারেন

git meld

সাইগউইনের সাথে আমি সবেমাত্র কাজ করেছিলাম, এখন তা ভেঙে গেছে। এটি এটি স্থির করে। ধন্যবাদ! (যদিও আমি --dir-diffব্যক্তিগত পছন্দ হিসাবে অংশটি
সরিয়েছি

3

উইন্ডোজ 10 এর জন্য আমাকে এটি আমার .gitconfig- এ রাখতে হয়েছিল:

[merge]
  tool = meld
[mergetool "meld"]
  cmd = 'C:/Program Files (x86)/Meld/Meld.exe' $LOCAL $BASE $REMOTE --output=$MERGED
[mergetool]
  prompt = false

আপনার যা কিছু জানা দরকার তা এই দুর্দান্ত উত্তরে লেখা আছে আরও উপরে উপরে ম্যাটসেট দ্বারা ।

পিএস: কোনও কারণে, এটি কেবল মেল্ড 3.18.x নিয়ে কাজ করেছে, মেল্ড 3.20.x আমাকে একটি ত্রুটি দেয়।


1

এটি একটি উত্তর যা মূলত উইন্ডোজ ব্যবহার করে বিকাশকারীকে লক্ষ্য করে তৈরি করা হয়, কারণ ডিফ সরঞ্জামগুলির পাথ সিনট্যাক্স অন্যান্য প্ল্যাটফর্মের থেকে পৃথক।

আমি কেডিফ 3কে গিট মার্জারটুল হিসাবে ব্যবহার করি, তবে গিল্ড ডিফ্টলটি মেল্ড হিসাবে সেট আপ করতে, আমি প্রথমে মেল্ডার্সআরগ্রোম থেকে মেল্ডের সর্বশেষ সংস্করণটি ইনস্টল করেছিলাম তারপরে নিম্নলিখিতটি আমার বৈশ্বিক .gitconfig এ যুক্ত করে ব্যবহার করেছি:

git config --global -e

দ্রষ্টব্য, আপনি যদি মূল ডিটার হিসাবে ডিফল্ট ভিমের পরিবর্তে সাব্লাইম টেক্সট 3 চান তবে আপনি এটি .gitconfig ফাইলে যুক্ত করতে পারেন:

[core]
editor = 'c:/Program Files/Sublime Text 3/sublime_text.exe'

তারপরে আপনি ডাইফেল্ট হিসাবে সর্ট মেল্ড যুক্ত করুন

[diff]
tool = meld
guitool = meld 

[difftool "meld"]
cmd = \"C:/Program Files (x86)/Meld/Meld.exe\" \"$LOCAL\" \"$REMOTE\" --label \"DIFF 
(ORIGINAL MY)\"
prompt = false
path = C:\\Program Files (x86)\\Meld\\Meld.exe

উপরের সেন্টিমিডে শীর্ষস্থানীয় স্ল্যাশটি নোট করুন, উইন্ডোজে এটি প্রয়োজনীয়।

--Dir-diff দিয়ে বর্তমান গিট ডিফ দেখানোর জন্য একটি উপাত্ত সেটআপ করাও সম্ভব বিকল্পের । এটি মেলডের অভ্যন্তরে পরিবর্তিত ফাইলগুলি তালিকাভুক্ত করবে, যখন আপনি একাধিক ফাইল (সত্যই খুব সাধারণ দৃশ্যে) পরিবর্তন করেন তখন সহজ হয়।

উপনামটি .gitconfig ফাইলের ভিতরে [উপনাম] বিভাগের নীচে দেখাচ্ছে :

showchanges = difftool --dir-diff

আমি কোডটিতে আমি যে পরিবর্তনগুলি করেছি তা দেখানোর জন্য কেবল নীচের কমান্ডটি প্রবেশ করান:

git showchanges

নিম্নলিখিত চিত্রটি দেখায় যে কীভাবে এই --dir-diff বিকল্পটি পরিবর্তিত ফাইলগুলির উদাহরণ (উদাহরণস্বরূপ) প্রদর্শন করতে পারে: মাঠের মধ্যে ফাইলগুলির তালিকা showing লোকাল এবং files রিমোটের মধ্যে পরিবর্তন রয়েছে showing

তারপরে প্রতিটি ফাইলে ক্লিক করা এবং মাইল্ডের অভ্যন্তরে পরিবর্তনগুলি দেখানো সম্ভব।


0

মার্জডের বিভিন্ন বিভাগ থেকে আপনার মাথার মধ্যে একটি পৃথক গণনা করা এবং এটি প্রয়োগ করা জটিল হতে পারে। আমার সেটআপে, মেল্ড আপনাকে এই আলাদা করে দৃশ্যমানভাবে দেখিয়ে সাহায্য করে:

[merge]
    tool = mymeld
    conflictstyle = diff3

[mergetool "mymeld"]
    cmd = meld --diff $BASE $REMOTE --diff $REMOTE $LOCAL --diff $LOCAL $MERGED

এটি অদ্ভুত দেখাচ্ছে তবে তিনটি ট্যাব ব্যবহার করে খুব সুবিধাজনক কাজের প্রবাহ সরবরাহ করে:

  1. ট্যাব 1 এ আপনি দেখতে পাবেন (বাম থেকে ডানে) মার্জ সংঘাত সমাধানের জন্য আপনার ট্যাব 2 এ করা উচিত।

  2. ট্যাব 2 এর ডান দিকে আপনি "আপনার করা উচিত এমন পরিবর্তন" প্রয়োগ করুন এবং ক্লিপবোর্ডে সম্পূর্ণ ফাইলের সামগ্রী অনুলিপি করুন (সিটিআরএল-এ এবং সিটিআরএল-সি ব্যবহার করে)।

  3. ট্যাব 3 এ ক্লিপবোর্ডের সামগ্রীগুলির সাথে ডান দিকটি প্রতিস্থাপন করুন। যদি সবকিছু সঠিক হয় তবে আপনি এখন দেখতে পাবেন - বাম থেকে ডানে - ট্যাব 1 এ প্রদর্শিত একই পরিবর্তন (তবে বিভিন্ন প্রসঙ্গের সাথে)। এই ট্যাবে করা পরিবর্তনগুলি সংরক্ষণ করুন।

মন্তব্য:

  • ট্যাব 1 এ কোনও কিছু সম্পাদনা করবেন না
  • ট্যাব 2-তে কোনও কিছু সংরক্ষণ করবেন না কারণ এটি ট্যাব 3-এ বিরক্তিকর পপআপগুলি তৈরি করবে

এটি কি কোনও একক ট্যাবে 3-উপায় সংহতকরণ (স্থানীয় / বেস / রিমোট) এর চেয়ে ভাল?
আন্দ্রে ওয়ার্ল্যাং

@ অ্যান্ড্রু ওয়ার্ল্যাং একটি একক ট্যাবে 3-উপায় সংযুক্তির সুবিধা হ'ল আপনার কেবল বিরোধী পরিবর্তনগুলি মোকাবেলা করতে হবে (অন্যান্য পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে একত্রিত হয়ে যাবে)। তবে যে ক্ষেত্রে পরিবর্তন হয়েছে, এবং কীভাবে সমস্ত পরিবর্তনগুলি সংরক্ষণ করে এমনভাবে কীভাবে মার্জ করা যায় সে ক্ষেত্রে আমি "আমার" পদ্ধতির ক্ষেত্রে অগ্রাধিকার দিই where যদি কোনও সময়ে 3-উপায় সংহতকরণ আমাকে আর বিভ্রান্ত করে না তবে আমি এটিতে ফিরে যেতে পারি।
mnieber

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