اندرونی طور پر، Git ایک content-addressable object store ہے — یہ سب کچھ objects (blobs، trees، commits، tags) کے طور پر محفوظ کرتا ہے جو اپنے SHA-1 hash سے شناخت کیے جاتے ہیں۔ اس ماڈل کو سمجھنا Git کو سمجھنا آسان بناتا ہے اور وضاحت کرتا ہے کہ اس کے operations کیوں اس طرح برتاؤ کرتے ہیں۔
Git ایک content-addressable object store ہے
Git stores 4 types of OBJECTS, each identified by the SHA-1 HASH of its content:
BLOB → file CONTENTS (just the data, no filename)
TREE → a directory: maps names → blobs (files) and trees (subdirs) + permissions
COMMIT → a snapshot: points to a TREE (the root) + parent commit(s) + author/message
TAG → an annotated tag object (points to a commit, with metadata)
→ Content-addressable: an object's ID IS the hash of its content (same content = same hash).
ایک commit ایک snapshot ہے، diff نہیں
→ Each COMMIT points to a complete TREE (the full state of the project at that point)
→ Git stores SNAPSHOTS, not diffs (though it compresses/deduplicates internally):
unchanged files → the commit's tree just REUSES the same blob (same hash) → efficient
→ Diffs you see are COMPUTED between snapshots, not stored.
یہ کیسے اکٹھا کام کرتا ہے
Branch (e.g. main) → a pointer (a ref) to a COMMIT
HEAD → points to the current branch (or commit)
Commit → tree → blobs (the snapshot)
Commit → parent → parent → ... (the history chain)
→ Branches/tags are just small files containing a commit hash (cheap pointers).
That's WHY branching is so lightweight.
یہ Git کے رویے کی وضاحت کیوں کرتا ہے
✓ Branches are cheap → they're just a 40-char hash in a file (not file copies)
✓ Integrity → content-addressing means corruption/changes are detectable (hash mismatch)
✓ Commits are immutable → changing anything = a new hash = a new commit (why rebase
creates NEW commits, why history rewriting changes hashes)
✓ Deduplication → identical content stored once (shared blobs)
کیوں یہ اہم ہے
Git کے اندرونی کام کو سمجھنا قیمتی senior-level علم ہے کیونکہ یہ Git کو سمجھنا آسان بناتا ہے اور وضاحت کرتا ہے کہ اس کے operations کیوں اس طرح برتاؤ کرتے ہیں، Git کے بارے میں سوچنے اور اسے اعتماد سے استعمال کرنے کی آپ کی صلاحیت کو گہرا بناتے ہوئے۔
بنیادی ماڈل — Git ایک content-addressable object store ہے جس میں چار object types ہیں (blobs فائل کے مکمل مواد کے لیے، trees directories کے لیے، commits snapshots کے لیے، tags) ہر ایک اپنے content کے hash سے شناخت کیا جاتا ہے — یہ وہ بنیاد ہے جس پر سب کچھ ٹکا ہوا ہے۔
یہ سمجھنا کہ ایک commit ایک snapshot ہے، diff نہیں (ہر commit پورے project state کی نمائندگی کرنے والے مکمل tree کی طرف اشارہ کرتا ہے، غیر تبدیل شدہ فائلیں مؤثر طریقے سے اسی blob کو دوبارہ استعمال کرتی ہیں، اور diffs محفوظ کے بجائے شمار کیے جاتے ہیں) ایک عام غلط فہمی کو درست کرتا ہے اور Git کے snapshot-based ماڈل کی وضاحت کرتا ہے۔
یہ دیکھنا کہ یہ کیسے اکٹھا کام کرتا ہے (branches اور tags commits کے سستے pointers/refs کے طور پر، HEAD موجودہ branch کی طرف اشارہ کرتے ہوئے، commits parents کے ذریعے جڑے ہوئے) نیچے خوبصورت سادگی کو ظاہر کرتا ہے۔
سب سے زیادہ قیمتی طریقے سے، یہ سمجھ Git کے مشاہدہ شدہ رویے کی وضاحت کرتا ہے: کیوں branches ہلکے ہیں (صرف ایک چھوٹی فائل میں hash، فائل کاپیز نہیں — وضاحت کرتا ہے کہ branching اتنی تیز کیوں ہے)، کیوں Git میں سالمیت ہے (content-addressing hash mismatch کے ذریعے corruption کا پتہ لگاتا ہے)، کیوں commits غیر تبدیل ہیں اور history-rewriting operations جیسے rebase نئے commits نئے hashes کے ساتھ بناتے ہیں (کسی بھی مواد کو تبدیل کرنا hash کو تبدیل کرتا ہے)، اور کیوں Git deduplicates (ایک جیسا مواد ایک بار محفوظ ہوتا ہے)۔
یہ گہرا ماڈل Git کو یاد شدہ commands کے سیٹ سے ایک قابل فہم نظام میں تبدیل کرتا ہے، پیچیدہ operations کے بارے میں اعتماد سے سوچنے کو ممکن بناتے ہوئے۔
چونکہ اندرونی object model کو سمجھنا وضاحت کرتا ہے کہ Git کیوں اس طرح برتاؤ کرتا ہے (ہلکی branches، غیر تبدیل commits، rewriting پر hash تبدیلیاں، سالمیت) اور ایک کو Git استعمال کرنے سے اسے واقعی سمجھنے تک بلند کرتا ہے، Git internals کو سمجھنا قیمتی senior-level علم ہے — ایک موضوع جو senior roles کے لیے توقع کی گہرائی کو ظاہر کرتا ہے اور Git کے بارے میں اعتماد سے سوچنے کے لیے ذہنی ماڈل فراہم کرتا ہے، اس کے رویے کو سمجھنا اور advanced operations کو غیر واضح کی بجائے سمجھنے کے قابل بناتا ہے۔
