𝗜𝗻𝘀𝗶𝗱𝗲 𝗚𝗶𝘁: 𝗢𝗯𝗷𝗲𝗰𝘁𝘀 & 𝗛𝗮𝘀𝗵𝗶𝗻𝗴

Git தரவைச் சேமிக்கும் விதம் காரணமாக அது வேகமாகவும் நம்பகமானதாகவும் உள்ளது. Git-ல் நிபுணத்துவம் பெற, நீங்கள் .git கோப்பகத்தைப் (directory) புரிந்துகொள்ள வேண்டும். உங்கள் திட்டத்தைக் கண்காணிக்க Git-க்குத் தேவையான அனைத்தையும் இந்த மறைக்கப்பட்ட கோப்புறை (hidden folder) கொண்டுள்ளது.

உங்கள் வேலையை நிர்வகிக்க Git நான்கு முக்கிய object வகைகளைப் பயன்படுத்துகிறது:

  • Blobs: இவை கோப்பின் உள்ளடக்கத்தைச் சேமிக்கின்றன.
  • Trees: இவை கோப்புறை அமைப்புகள் (directory structures) மற்றும் கோப்புப் பெயர்களைச் சேமிக்கின்றன.
  • Commits: இவை உங்கள் திட்டத்தின் ஸ்னாப்ஷாட்கள் (snapshots) மற்றும் மெட்டாடேட்டாவைச் சேமிக்கின்றன.
  • Tags: இவை குறிப்பிட்ட பதிப்புகளுக்கான குறிப்புகளைச் சேமிக்கின்றன.

Git அனைத்தையும் hashing மூலம் அடையாளம் காண்கிறது. தரவை ஒரு தனித்துவமான ID-யாக மாற்ற அது SHA-1 அல்காரிதத்தைப் பயன்படுத்துகிறது. இந்த ID ஒரு கைரேகையைப் போலச் செயல்படுகிறது. ஒரு கோப்பில் நீங்கள் ஒரு எழுத்தை மாற்றினாலும், அதன் hash முற்றிலும் மாறிவிடும்.

Git எவ்வாறு ஒரு ஸ்னாப்ஷாட்டை உருவாக்குகிறது:

நீங்கள் ஒரு கோப்பை commit செய்யும்போது, Git பொருள்களின் (objects) ஒரு சங்கிலியை உருவாக்குகிறது.

  1. Blob உங்கள் கோப்பில் உள்ள உண்மையான உரை அல்லது தரவைச் சேமிக்கிறது.
  2. Tree அந்த blob-ஐ ஒரு குறிப்பிட்ட கோப்புப் பெயர் மற்றும் கோப்புறைப் பாதைக்கு (folder path) இணைக்கிறது.
  3. Commit அந்த tree-ஐ ஒரு ஆசிரியர் (author), நேர முத்திரை (timestamp) மற்றும் செய்தி ஆகியவற்றுடன் இணைக்கிறது.

Git மாற்றங்களையோ அல்லது "deltas"-ஐயோ சேமிப்பதில்லை. அது ஸ்னாப்ஷாட்களைச் சேமிக்கிறது. நீங்கள் ஒவ்வொரு முறை commit செய்யும்போது, Git புதிய பொருள்களை உருவாக்குகிறது. இது உங்கள் வரலாற்றை மாற்ற முடியாததாகவும் (immutable) மற்றும் எளிதில் மீட்டெடுக்கக்கூடியதாகவும் மாற்றுகிறது.

இந்த அமைப்பைப் புரிந்துகொள்வது பிழைகளைச் சரிசெய்யவும், தொலைந்து போன தரவை மீட்டெடுக்கவும் மற்றும் சிக்கலான கிளைகளை (branches) நிர்வகிக்கவும் உங்களுக்கு உதவுகிறது.

இது எவ்வாறு செயல்படுகிறது என்பதைப் பார்க்க இந்தச் சிறு திட்டத்தை முயன்று பாருங்கள்:

  1. Initialize a repo: mkdir git-lab cd git-lab git init

  2. Create a file and find its hash: echo 'Hello Git' > hello.txt git hash-object hello.txt

  3. Store the file as a blob: git hash-object -w hello.txt

  4. Check the object type and content: git cat-file -t [YOUR_HASH] git cat-file -p [YOUR_HASH]

  5. Create a commit and see the tree: git add hello.txt git commit -m 'Initial commit' git ls-tree HEAD

இதன் உட்புற செயல்பாட்டைப் பார்க்கும்போது, Git என்பது வெறும் பதிப்பு கட்டுப்பாட்டு கருவி (version control tool) மட்டுமல்ல என்பதை நீங்கள் காண்பீர்கள். இது உள்ளடக்கத்தால் அடையாளம் காணப்பட்ட பொருள்களின் (content-addressed objects) ஒரு நன்கு ஒழுங்கமைக்கப்பட்ட தரவுத்தளமாகும்.

Source: https://dev.to/lotanna_obianefo/inside-git-objects-hashing-44gc

Optional learning community: https://t.me/GyaanSetuAi