git - লিনাস টরভাল্ডস মানে কি বলে যে গিট "কখনও কখনও" কোনও ফাইলকে ট্র্যাক করে না?




version-control (4)

২007 সালে গুগলে তার টেক টকিংয়ের সময় জিট কত ফাইল পরিচালনা করতে পারে তা জানতে চাইলে লিনুস টরভাল্ডসকে উদ্ধৃত করে (43:09):

... গিট আপনার কন্টেন্ট ট্র্যাক। এটা কখনও কখনও একটি একক ফাইল ট্র্যাক। আপনি জিট একটি ফাইল ট্র্যাক করতে পারবেন না। আপনি যা করতে পারেন তা হল আপনি একটি প্রকল্পে ট্র্যাক করতে পারেন যা একটি ফাইল থাকে তবে যদি আপনার প্রোজেক্টটিতে একটি ফাইল থাকে তবে তা নিশ্চিত করুন এবং আপনি এটি করতে পারেন, তবে যদি আপনি 10,000 ফাইলগুলি ট্র্যাক করেন তবে গিট কখনও ব্যক্তিগত ফাইল হিসাবে এটি দেখতে পাবে না। Git সম্পূর্ণ কন্টেন্ট হিসাবে সবকিছু মনে করে। গিটের সব ইতিহাস পুরো প্রকল্পের ইতিহাসের উপর ভিত্তি করে ...

( here প্রতিলিপি।)

তবুও, যখন আপনি গিট বুকের মধ্যে ডুববেন , প্রথমটি আপনাকে বলা হবে যে গিটের একটি ফাইলটি ট্র্যাক করা বা অচিহ্নিত করা যেতে পারে। তাছাড়া, আমার মনে হয় পুরো গিটের অভিজ্ঞতা ফাইল সংস্করণের দিকে দৃষ্টি নিবদ্ধ করা হয়েছে। git diff বা git status আউটপুট ব্যবহার করার সময় প্রতি ফাইল ভিত্তিতে উপস্থাপন করা হয়। git add আপনি প্রতি ফাইল ভিত্তিতে নির্বাচন করতে পাবেন। আপনি এমনকি একটি ফাইল ভিত্তিতে ইতিহাস পর্যালোচনা করতে পারেন এবং দ্রুত বাজানো হয়।

কিভাবে এই বিবৃতি ব্যাখ্যা করা উচিত? ফাইল ট্র্যাকিংয়ের পরিপ্রেক্ষিতে, গিট কীভাবে অন্যান্য উৎস নিয়ন্ত্রণ পদ্ধতির থেকে পৃথক, যেমন সিভিএস?


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

এখন যে সংগ্রহস্থল। গিটটির একটি কার্যকরী গাছ রয়েছে, এবং এই কার্যকরী গাছটিতে ট্র্যাক এবং অট্যাকড ফাইল রয়েছে। শুধুমাত্র ট্র্যাককৃত ফাইলগুলি সূচী (স্টেজিং এলাকা? ক্যাশে?) এ রেকর্ড করা হয় এবং শুধুমাত্র ট্র্যাক করা জিনিসগুলি এটি সংগ্রহস্থলে তৈরি করে।

সূচী ফাইল ভিত্তিক এবং এটি manipulating জন্য কিছু ফাইল ভিত্তিক কমান্ড আছে। কিন্তু রিপোজিটরিতে কী শেষ হয় তা কেবলমাত্র ফাইল ট্রি স্ন্যাপশট এবং সংশ্লিষ্ট ব্লব ডেটা এবং কমিটির পূর্বপুরুষের আকারে হয়।

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

সেভভারসনের মতো সিস্টেমগুলির সাথে আলাদা যা ইতিহাসকে পুনর্নির্মাণের পরিবর্তে রেকর্ড করে । এটি রেকর্ড না থাকলে, আপনি এটি সম্পর্কে শুনতে পাবেন না।

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


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

আমার বইটিতে , যা স্থগিত এবং কখনও শেষ নাও হতে পারে, আমি সংস্করণ নিয়ন্ত্রণ ব্যবস্থাগুলির জন্য একটি taxonomy নিয়ে আসার চেষ্টা করেছি। আমার শ্রেণীবিন্যাসে আমরা এখানে আগ্রহী যা শব্দটি সংস্করণ নিয়ন্ত্রণ ব্যবস্থাটির পারমাণবিকতা । বর্তমানে পৃষ্ঠাটি দেখুন 22. যখন একটি VCS- এ ফাইল-লেভেল পারমানবিকতা থাকে, তখন আসলে প্রতিটি ফাইলের ইতিহাস থাকে। VCS ফাইলের নাম এবং প্রতিটি বিন্দুতে এটি কি ঘটেছে তা অবশ্যই মনে রাখতে হবে।

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

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

যখন আপনি Git কে একটি ফাইলের ইতিহাস ব্যবহার করার জন্য জিজ্ঞাসা করেন:

git log [--follow] [starting-point] [--] path/to/file

গিট আসলে কি করছেন তা হল, ইতিহাসের ইতিহাসের দিকে হাঁটা, যা গিটের একমাত্র ইতিহাস, কিন্তু আপনি এইগুলি কোনটি দেখিয়ে না দিলে :

  • কমিটি একটি অ মার্জ কমিট, এবং
  • সেই অভিভাবকের পিতামাতারও ফাইল আছে তবে পিতামাতার সামগ্রী ভিন্ন, বা কমিটির পিতামাতার কাছে ফাইল নেই

(তবে এই শর্তগুলির মধ্যে কিছু অতিরিক্ত git log বিকল্পগুলির মাধ্যমে সংশোধন করা যেতে পারে এবং ইতিহাস সরলীকরণ নামে পার্শ্ব প্রতিক্রিয়া বর্ণনা করা খুব কঠিন, যা গিট সম্পূর্ণভাবে ইতিহাসের পদচারনায় কিছু কিছু বাদ দেয়)। এখানে আপনি যে ফাইল ইতিহাসটি দেখতে পান সেটি কোনও উপায়ে সংগ্রহস্থলের ঠিক অস্তিত্ব নেই: পরিবর্তে, এটি কেবলমাত্র প্রকৃত ইতিহাসের একটি সিন্থেটিক উপসেট। যদি আপনি বিভিন্ন git log বিকল্প ব্যবহার করেন তবে আপনি একটি ভিন্ন "ফাইল ইতিহাস" পাবেন!


ট্র্যাকিং "কন্টেন্ট", ঘটনাক্রমে, ফাঁকা ডিরেক্টরি ট্র্যাক না কি।
এজন্য, যদি আপনি ফোল্ডারটির শেষ ফাইলটি rm টি করেন তবে ফোল্ডার নিজেই মুছে যাবে ।

এটি সর্বদা মামলা ছিল না, এবং শুধুমাত্র Git 1.4 (মে 2006) 443f833 এ কমিটির সাথে "ট্র্যাকিং সামগ্রী" নীতি প্রয়োগ করেছিল :

গিট স্ট্যাটাস: খালি ডিরেক্টরিগুলি বাদ দিন, এবং add -u সমস্ত অট্যাকড ফাইলগুলি দেখান

ডিফল্টরূপে, আমরা --others --directory ডিরেক্টরিটি তাদের বিষয়বস্তু ছাড়া (অকার্যকর আউটপুট) ছাড়াই --others --directory ডিরেক্টরিগুলি (ব্যবহারকারীর মনোযোগ পেতে) ব্যবহার করতে ব্যবহার --others --directory
ফাঁকা ডিরেক্টরিগুলি বোঝা যাচ্ছে না, সুতরাং আমরা যখন এটি করি --no-empty-directory পাস করুন।

Giving -u (বা --untracked ) ব্যবহারকারীর সমস্ত অট্যাকড ফাইলগুলি পেতে দেওয়ার জন্য এই --untracked অক্ষম করে।

যেটি জানুয়ারী ২011-এ কয়েক বছর পরে আটকানো হয়েছিল 8 টি 515 টি , গিট v1.7.4:

এটি সাধারণ UI দর্শনের সাথে পালন করা হয়: git সামগ্রীগুলি ট্র্যাক করে, খালি ডিরেক্টরি নয়।

ইতিমধ্যে, Git 1.4.3 (সেপ্টেম্বর 2006) দিয়ে, গিট 2074cb0 কমিট করে অটোকুক্ত সামগ্রীগুলি অ-খালি ফোল্ডারগুলিতে সীমাবদ্ধ করে শুরু করে:

এটি সম্পূর্ণ অটোমেটেড ডিরেক্টরিগুলির বিষয়বস্তু তালিকাভুক্ত করা উচিত নয়, তবে কেবলমাত্র সেই ডিরেক্টরিটির নাম (প্লাসের পিছনে ' / ') থাকা উচিত।

ট্র্যাকিং সামগ্রীটি গিটকে দোষারোপ করার অনুমতি দেয়, খুব তাড়াতাড়ি (গিট 1.4.4, অক্টোবর 2006, cee7f24 প্রত্যুত্তর ) আরো বেশি অভিনয়কারী হতে পারে:

আরো গুরুত্বপূর্ণ, এটির অভ্যন্তরীণ কাঠামো একই অঙ্গীকার থেকে একাধিক পথ গ্রহণের মাধ্যমে আরও সহজে বিষয়বস্তু আন্দোলন (আকা কাট এবং পেস্ট) সমর্থন করার জন্য ডিজাইন করা হয়েছে

যে (ট্র্যাকিং বিষয়বস্তু) Git 1.5.0 (ডিসেম্বর 2006, 366bfcb কমিট ) সহ Git API এ জিট যোগ করাও কি।

সূচীতে প্রথম শ্রেণীর ব্যবহারকারী বান্ধব ইন্টারফেস 'git add' তৈরি করুন

এই সূচী সম্পর্কে কথা বলার অপেক্ষা রাখে না একটি সঠিক মানসিক মডেল ব্যবহার করে সূচক আপ সামনের শক্তি আসে।
উদাহরণস্বরূপ দেখুন, কিভাবে সমস্ত প্রযুক্তিগত আলোচনা গিট-অ্যাড ম্যান পৃষ্ঠা থেকে বের করা হয়েছে।

প্রতিশ্রুতিবদ্ধ কোন কন্টেন্ট একসঙ্গে যোগ করা আবশ্যক।
যে বিষয়বস্তু নতুন ফাইল বা সংশোধিত ফাইল থেকে আসে না ব্যাপার না।
আপনি কেবল এটি যোগ করতে হবে, গিট-অ্যাড দিয়ে, অথবা -a দিয়ে জিট-কমিট সরবরাহ করে (ইতিমধ্যে অবশ্যই পরিচিত ফাইলগুলির জন্য)।

একই গিট 1.5.0 ( 5cde71d কমিট ) সঙ্গে git add --interactive সক্রিয়, যা কি হয়

নির্বাচন করার পরে, সূচীর নির্বাচিত পাথের জন্য কাজ করার জন্য গাছের ফাইলগুলির উপাদানগুলি পর্যায়ক্রমে খালি লাইন দিয়ে উত্তর দিন।

একই কারণে, ডিরেক্টরি থেকে সমস্ত সামগ্রী পুনরাবৃত্তি করার জন্য, আপনার অবশ্যই পাস- -r বিকল্পের দরকার হবে না, শুধুমাত্র ডিরেক্টরি নামটি <path> (এখনও জিটি 1.5.0, 9 ফ95069 প্রেরণ করুন ) হিসাবে।

ফাইলে ফাইল ফাইলের পরিবর্তে ফাইলটি দেখতে হলে এটি 1de70db (গিট v2.18.0-rc0, এপ্রিল 2018) এ বর্ণিত বর্ণনার মত বিভাজনকে মঞ্জুরি দেয়।

একটি নামকরণ / সংঘাত যোগ সঙ্গে নিম্নলিখিত একত্রিত বিবেচনা করুন:

  • পার্শ্ব একটি: foo পরিবর্তন, সম্পর্কযুক্ত bar যোগ করুন
  • পাশ বি: নামকরণ foo->bar (কিন্তু মোড বা বিষয়বস্তু সংশোধন করবেন না)

এই ক্ষেত্রে, মূল foo, তিন-উপায়ের একত্রিতকরণ, এবং বি- bar bar একই ধরণের মোড / সামগ্রীগুলির bar পছন্দসই পথের নামকরণ করবে যা A -এর জন্য A ছিল।
সুতরাং, ফাইলটির জন্য A সঠিক মোড এবং সামগ্রী ছিল এবং এটিতে সঠিক পথের নাম উপস্থিত ছিল (অর্থাত্ bar )।

Commit 37b65ce , Git v2.21.0-rc0, ডিসেম্বর 2018, সম্প্রতি সংঘর্ষ সংঘর্ষের রেজুলেশন উন্নত হয়েছে।
এবং bbafc9c firther পুনঃনামকরণ / পুনঃনামকরণ (2to1) দ্বন্দ্বের জন্য হ্যান্ডলিং উন্নত করে ফাইল সামগ্রী বিবেচনা করার গুরুত্বকে চিত্রিত করে:

  • collide_path~HEAD এ ফাইলগুলি সংরক্ষণের পরিবর্তে collide_path~HEAD এবং collide_path~MERGE , ফাইল দুটি উপায়ে মার্জ করা হয়েছে এবং collide_path এ রেকর্ড করা collide_path
  • পরিবর্তিত নামটির সংস্করণ রেকর্ড করার পরিবর্তে ইন্ডেক্সে পরিবর্তিত দিকে বিদ্যমান (এইভাবে কোনও পরিবর্তন যা ইতিহাসের পাশে ফাইলের নামে তৈরি করা হয়েছে) উপেক্ষা করে আমরা পুনঃনামকরণে তিন-উপায়ে সামগ্রী একত্রিত করি পাথ, তারপর যে স্টেজ 2 বা মঞ্চ 3 সংরক্ষণ করুন।
  • মনে রাখবেন যেহেতু প্রতিটি পুনঃনামকরণের জন্য সামগ্রী একত্রিত হতে পারে তত্সহ দ্বন্দ্ব থাকতে পারে এবং তারপরে আমাদের দুটি পুনঃনামকৃত ফাইলগুলি মার্জ করতে হবে, আমরা নেস্টেড সংঘাত চিহ্নিতকারীগুলির সাথে শেষ করতে পারি।

বিভ্রান্তিকর বিট এখানে:

Git কখনও কখনও পৃথক ফাইল হিসাবে যারা দেখেন। Git সম্পূর্ণ কন্টেন্ট হিসাবে সবকিছু মনে করে।

গিট প্রায়ই তার নিজস্ব repo বস্তুর জায়গায় 160 বিট হ্যাশ ব্যবহার করে। ফাইলগুলির একটি গাছ মূলত নাম এবং হ্যাশের প্রতিটি তালিকা (প্লাস কিছু মেটাডেটা) এর সাথে সম্পর্কিত।

কিন্তু 160 বিট হ্যাশ অনন্যভাবে বিষয়বস্তু (গিট ডাটাবেসের মহাবিশ্বের মধ্যে) সনাক্ত করে। সুতরাং কন্টেন্ট হিসাবে হ্যাশ সঙ্গে একটি গাছ তার রাষ্ট্র কন্টেন্ট অন্তর্ভুক্ত

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

যখন একটি গিট ডাটাবেস একটি ডিরেক্টরি ট্রি সঞ্চয় করে, তখন সেই ডিরেক্টরি গাছটি বোঝায় এবং এতে সমস্ত উপডরেক্টরির সমস্ত সামগ্রী এবং এটির সমস্ত ফাইল অন্তর্ভুক্ত থাকে

এটি গাছের কাঠামোতে (অপরিবর্তনীয়, পুনঃব্যবহারযোগ্য) পয়েন্টারগুলিতে ব্লোবস বা অন্যান্য গাছগুলিতে সংগঠিত হয় তবে যুক্তিযুক্তভাবে এটি সমগ্র গাছের সমগ্র সামগ্রীর একটি স্ন্যাপশট। জিট ডাটাবেসের উপস্থাপনা সমতল তথ্য সামগ্রী নয়, তবে যুক্তিযুক্তভাবে এটির সমস্ত তথ্য এবং অন্য কিছুই নেই।

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

এটি রেফারেন্স হিসাবে অটোমেটিক ডেটাতে পয়েন্টার হিসাবে গিটের হ্যাশগুলি মনে করতে সহায়তা করতে পারে।

যদি আপনি তার চারপাশে একটি অ্যাপ্লিকেশন তৈরি করেন, তবে একটি দস্তাবেজ পৃষ্ঠাগুলির একটি গুচ্ছ, যার স্তর আছে, যার গোষ্ঠী রয়েছে, যা বস্তু আছে।

যখন আপনি একটি বস্তু পরিবর্তন করতে চান, তখন আপনাকে এটির জন্য একটি সম্পূর্ণ নতুন গোষ্ঠী তৈরি করতে হবে। আপনি যদি একটি গ্রুপ পরিবর্তন করতে চান তবে আপনাকে একটি নতুন স্তর তৈরি করতে হবে, যার জন্য একটি নতুন পৃষ্ঠা প্রয়োজন, যা একটি নতুন নথির প্রয়োজন।

প্রতিবার আপনি যখন একক বস্তু পরিবর্তন করেন, তখন এটি একটি নতুন নথিতে উদ্দীপিত হয়। পুরাতন নথি বিদ্যমান থাকে। নতুন এবং পুরাতন নথি তাদের অধিকাংশ সামগ্রী ভাগ করে - তাদের একই পৃষ্ঠাগুলি থাকে (1 টি ছাড়া)। যে এক পৃষ্ঠায় একই স্তর আছে (1 ছাড়া)। যে স্তর একই গ্রুপ আছে (1 ছাড়া)। যে গ্রুপ একই বস্তু আছে (1 ছাড়া)।

এবং একইভাবে, আমি তাত্ক্ষণিকভাবে একটি অনুলিপি মানে, কিন্তু বাস্তবায়ন-ভিত্তিক এটি অন্য অপ্রচলিত বস্তুর একটি পয়েন্টার গণনা করা হয়।

একটি গিট repo যে অনেক ভালো।

এর অর্থ হল প্রদত্ত গিট পরিবর্তকটিতে তার প্রেরণ বার্তা (একটি হ্যাশ কোড হিসাবে) রয়েছে, এটির কার্যক্ষেত্রের বৃক্ষ রয়েছে এবং এতে এটির মূল পরিবর্তনগুলি রয়েছে।

যারা অভিভাবক পরিবর্তন তাদের পিতামাতার পরিবর্তন, ফিরে সব উপায় থাকে।

ইতিহাসের অন্তর্গত গিট রেপোর অংশটি পরিবর্তনগুলির চেইন। "চেনাশোনা" গাছ থেকে "ডিরেক্টরি" গাছের উপরে একটি স্তরে এটি পরিবর্তন করে, আপনি একটি পরিবর্তন সেট এবং পরিবর্তনগুলির শৃঙ্খলে অনন্যতা অর্জন করতে পারবেন না।

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

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

সুতরাং GIT একসঙ্গে একটি "ফাইল ইতিহাস" করতে পারেন।

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





version-control