দ্রষ্টব্য: গিট এবং মার্কুরিয়ালের মধ্যে সবচেয়ে বড় পার্থক্যগুলির একটি হ'ল সূচক বা মঞ্চের স্পষ্ট উপস্থিতি ।
গিট ব্যবহারকারীর জন্য মার্চুরিয়াল থেকে :
গিট হ'ল একমাত্র ডিস্ট্রিবিউটেডএসসিএম যা সূচক বা মঞ্চের ক্ষেত্রের ধারণাটি প্রকাশ করে। অন্যরা এটি প্রয়োগ করতে এবং আড়াল করতে পারে, তবে অন্য কোনও ক্ষেত্রে ব্যবহারকারী সচেতন নয় এবং এটির মোকাবেলা করতে হবে না।
মার্চুরিয়ালের মোটামুটি সমতুল্য হ'ল DirState
, যা পরবর্তী প্রতিশ্রুতিতে অন্তর্ভুক্ত হওয়া ফাইলগুলি নির্ধারণ করতে ওয়ার্কিং অনুলিপি স্থিতির তথ্য নিয়ন্ত্রণ করে। তবে যে কোনও ক্ষেত্রে, এই ফাইলটি স্বয়ংক্রিয়ভাবে পরিচালিত হয়।
অতিরিক্তভাবে, কম্যান্ড লাইনে আপনি যে ফাইলগুলি প্রতিশ্রুতিবদ্ধ করতে চান তা নির্দিষ্ট করে বা এটি ব্যবহার করে কমিট করার সময় আরও বেশি নির্বাচনী হওয়া সম্ভব RecordExtension
।
আপনি যদি সূচকে কাজ করতে অস্বস্তি বোধ করেন তবে আপনি আরও ভাল ;-) এ স্যুইচ করছেন
কৌশলটি হ'ল সম্পূর্ণ গিটকে কাজে লাগানোর জন্য আপনাকে সূচকটি বুঝতে হবে। ২০০ 2006 সালের মে মাসের এই নিবন্ধটি তখন আমাদের মনে করিয়ে দেয় (এবং এটি এখনও সত্য)
"আপনি যদি সূচকে অস্বীকার করেন তবে আপনি সত্যিই গিটকে অস্বীকার করবেন।"
এখন, এই নিবন্ধটিতে অনেকগুলি কমান্ড রয়েছে যা এখন ব্যবহার করা সহজ (তাই এর সামগ্রীতে খুব বেশি নির্ভর করবেন না)) তবে সাধারণ ধারণাটি রয়ে গেছে:
আপনি একটি নতুন বৈশিষ্ট্য নিয়ে কাজ করছেন এবং একটি ফাইলে সামান্য পরিবর্তন করা শুরু করেন।
# working, add a few lines
$ git add myFile
# working, another minor modification
$ git add myFile
এই মুহুর্তে, আপনার পরবর্তী প্রতিশ্রুতি বর্তমান শাখায় 2 টি সামান্য পরিবর্তন শুরু করবে
# working, making major modification for the new features
# ... damn! I cannot commit all this in the current branch: nothing would work
$ git commit
কেবলমাত্র এই সময়ে মঞ্চ অঞ্চল (সূচক) এ যুক্ত হওয়া পরিবর্তনগুলি রেকর্ড করে, বর্তমানে আপনার কার্যকরী ডিরেক্টরিতে প্রদর্শিত বড় পরিবর্তনগুলি নয়।
$ git branch newFeature_Branch
$ git add myFile
পরবর্তী প্রতিশ্রুতিবদ্ধ নতুন শাখার অন্যান্য নতুন পরিবর্তনগুলি রেকর্ড করবে 'নতুন ফ্রেস_ব্রাঞ্চ'।
এখন, ইন্টারেক্টিভভাবে যুক্ত করা বা একটি প্রতিশ্রুতি বিভক্ত করা মার্কুরিয়ালের সাথে ' hg record
' কমান্ড বা অন্যান্য এক্সটেনশনের মাধ্যমে উপলব্ধ বৈশিষ্ট্যগুলি : আপনার ইনস্টল করতে হবে RecordExtension
, বা CrecordExtension
।
তবে এটি মার্চুরিয়ালের জন্য স্বাভাবিক কর্মপ্রবাহের অংশ নয়।
গিট " ফাইলের বিষয়বস্তু পরিবর্তন" এর সিরিজ হিসাবে একটি প্রতিশ্রুতি দেখেছে এবং আপনাকে একবারে এই পরিবর্তনগুলি যুক্ত করতে দেয়।
(সহজে করার ক্ষমতা মত গীত ক্ষমতার সর্বাধিক: আপনি যে বৈশিষ্ট্য এবং এর ফলাফল অধ্যয়ন করা উচিত মার্জ প্রত্যাবর্তন (অথবা সমস্যা দ্বিখণ্ডিত করা, অথবা একটি কমিট প্রত্যাবর্তন) , Mercurial বিপরীত ) যে "ফাইল বিষয়বস্তু" দৃষ্টান্ত থেকে আসে।
টোনফা (প্রোফাইলে: "এইচজি দেব, পাইথনিবাদক": পরিসংখ্যান ...) মন্তব্য করেছেন,
সূচকে মৌলিকভাবে "গিট-ইশ" তেমন কিছুই নেই, এইচজি কোনও সূচককে মূল্যবান হিসাবে বিবেচনা করা যেতে পারে, বাস্তবে mq
বা shelve
ইতিমধ্যে এর অংশটি করেছে।
ওহ ছেলে। এখানে আমরা আবার যেতে।
প্রথমত, আমি এখানে নেই যে একটি সরঞ্জাম অন্যর চেয়ে ভাল দেখায়। আমি এইচজি দুর্দান্ত, খুব স্বজ্ঞাত, একটি ভাল সমর্থন সহ (বিশেষত উইন্ডোজে, আমার মূল প্ল্যাটফর্ম, যদিও আমি লিনাক্স এবং সোলারিস 8 বা 10 তেও কাজ করি) পেয়েছি find
লিনাস টরভাল্ডস একটি ভিসিএসের সাথে যেভাবে কাজ করে তা সূচকটি আসলে সামনে এবং কেন্দ্র :
গিট প্রথম সংশ্লেষের আগেই প্রথম দিন থেকে সুস্পষ্ট সূচী আপডেট ব্যবহার করে। আমি কীভাবে সবসময় কাজ করেছি তা কেবল এটি। আমার গাছে এমন কিছু এলোমেলো প্যাচ রয়েছে যেটি আমি প্রতিশ্রুতি দিতে চাই না তার সাথে আমার নোংরা গাছ রয়েছে , কারণ এটি পরবর্তী সংস্করণের জন্য কেবল একটি মেকফাইল আপডেট
এখন সূচকের সংমিশ্রণ (যা কেবল গিতের মধ্যে দেখা যায় না এমন ধারণা) এবং "বিষয়বস্তু রাজা" দৃষ্টিকোণ এটি একেবারে অনন্য এবং "গিট-ইশ" করে তোলে :
গিটটি একটি সামগ্রী ট্র্যাকার এবং কোনও ফাইলের নামের সাথে এর লিখিত সামগ্রীর সাথে সম্পর্কিত না হলে এর কোনও অর্থ হয় না। অতএব, গিট অ্যাড ফাইলনামের একমাত্র বুদ্ধিমান আচরণ হ'ল ফাইলের বিষয়বস্তুর পাশাপাশি তার নাম সূচকে যুক্ত করা।
দ্রষ্টব্য: "সামগ্রী" এখানে বর্ণিত হয়েছে :
গিটের সূচকটি মূলত অনেক হিসাবে সংজ্ঞায়িত
- গাছের মোট " সামগ্রী " ধারণ করার জন্য যথেষ্ট (এবং এটি এতে সমস্ত মেটাডেটা অন্তর্ভুক্ত রয়েছে: ফাইলের নাম, মোড এবং ফাইল সামগ্রী সমস্ত "বিষয়বস্তুর" অংশ এবং এগুলি নিজেরাই অর্থহীন! )
- সুস্পষ্ট এবং তুচ্ছ (তবে অত্যন্ত গুরুত্বপূর্ণ!) ফাইল সিস্টেমের তুলনা অপ্টিমাইজেশনের অনুমতি দেওয়ার জন্য অতিরিক্ত "স্ট্যাটাস" তথ্য।
তাই আপনি যদি সত্যিই উচিত যেমন সূচক দেখতে হচ্ছে বিষয়বস্তু ।
সামগ্রীটি "ফাইলের নাম" বা পৃথক অংশ হিসাবে "ফাইলের সামগ্রী" নয়। আপনি সত্যিই দুটি পৃথক করতে পারবেন না ।
নিজের ফাইল ফাইলের নামগুলি কোনও বুদ্ধি দেয় না (তাদের ফাইলের বিষয়বস্তুও থাকতে হবে) এবং ফাইল ফাইলগুলি নিজে থেকে একইভাবে বুদ্ধিহীন (আপনাকে কীভাবে এটি পৌঁছাতে হবে তা জানতে হবে)।
আমি যা বলতে চাইছি তা হ'ল গিট মৌলিকভাবে আপনাকে এর বিষয়বস্তু ব্যতীত কোনও ফাইলের নাম দেখতে দেয় না । পুরো ধারণাটি উন্মাদ এবং বৈধ নয়। "বাস্তবতা" এর সাথে এর কোনও প্রাসঙ্গিকতা নেই।
এফএকিউ থেকে প্রধান সুবিধা হ'ল:
- একটি সূক্ষ্ম দানাদার সঙ্গে প্রতিশ্রুতিবদ্ধ
- আপনাকে যথাযথ দীর্ঘ সময়ের জন্য আপনার গাছে একটি আপত্তিহীন পরিবর্তন রাখতে সহায়তা করবে
- একটি প্রতিশ্রুতিবদ্ধকরণের জন্য কয়েকটি ছোট পদক্ষেপ সম্পাদন করুন, আপনি কী করেছেন তা
git diff
যাচাই করছেন এবং প্রতিটি ছোট পদক্ষেপ git add
বা এর সাথে বৈধতা দিন git add -u
।
- একত্রীকরণ দ্বন্দ্ব চমৎকার ব্যবস্থাপনা অনুমতি দেয়:
git diff --base
, git diff --ours
, git diff --theirs
।
git commit --amend
এর মধ্যে সূচিটি পরিবর্তন না করা হলে কেবল লগ বার্তাটি সংশোধন করার অনুমতি দেয়
আমি ব্যক্তিগতভাবে মনে করি এই আচরণটি ডিফল্ট হওয়া উচিত নয়, আপনি চান যে লোকেদের এমন কিছু প্রতিশ্রুত করা উচিত যা পরীক্ষিত বা কমপক্ষে সংকলিত
আপনি যখন সাধারণভাবে রয়েছেন ("পরীক্ষিত বা সংকলিত" অংশ সম্পর্কে), গিট আপনাকে শাখা এবং মার্জ করার জন্য যেভাবে অনুমতি দেয় (চেরি-বাছাই বা রিবিসিং) আপনি কোনও অস্থায়ী বেসরকারী শাখায় যতবার ইচ্ছা কমিট করার অনুমতি দেয় (কেবলমাত্র ঠেলাঠেলি করা হয়) দূরবর্তী "ব্যাকআপ" সংগ্রহস্থলটিতে), সরকারী শাখায় যারা "কুরুচিপূর্ণ প্রতিশ্রুতিবদ্ধ" পুনরায় কাজ করার সাথে সাথে সমস্ত সঠিক পরীক্ষাগুলি রেখে।