আমি কীভাবে সেট করতে এবং আমার গিট ডিফ্টল হিসাবে মেল্ড ব্যবহার করব?
গিট ডিফ্টল আপনার টার্মিনালে পৃথক আউটপুট প্রদর্শন করার পরিবর্তে জিইউআই প্রোগ্রাম (অর্থাত্ মেল্ড) ব্যবহার করে ডিফটি প্রদর্শন করে।
যদিও আপনি -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]*$
আমি আশা করি এটি প্রত্যেককে সহায়তা করে।