Skip to content

đŸ—‚ī¸ Git āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ (.git āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ) ​

āϝāĻ–āύ āφāĻĒāύāĻŋ git init āϚāĻžāϞāĻžāύ, āϤāĻ–āύ Git āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇āϰ āĻ­āĻŋāϤāϰ⧇ āĻāĻ•āϟāĻŋ .git āύāĻžāĻŽā§‡āϰ āĻšāĻŋāĻĄā§‡āύ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤ āĻāχ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰāϟāĻŋ āĻšāĻšā§āϛ⧇ Git-āĻāϰ āĻšā§ƒāĻĻ⧟, āϝ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡āϰ āϏāĻŽāĻ¸ā§āϤ āχāϤāĻŋāĻšāĻžāϏ, āĻŦā§āϰāĻžāĻžā§āϚ, āĻŸā§āϝāĻžāĻ—, āĻ•āĻŽāĻŋāϟ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āϤāĻĨā§āϝ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻĨāĻžāϕ⧇āĨ¤ āĻāϟāĻŋ āĻŽā§‚āϞāϤ āĻāĻ•āϟāĻŋ āϞ⧋āĻ•āĻžāϞ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋāĨ¤ āĻāχ .git āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰāϟāĻŋ āĻ›āĻžā§œāĻž Git āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇ āύāĻžāĨ¤

📁 .git āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇āϰ āĻ­āĻŋāϤāϰ⧇āϰ āĻ—āĻ āύ ​

āωāĻĒāĻžāĻĻāĻžāύāĻ•āĻžāĻœā§‡āϰ āĻŦāĻ°ā§āĻŖāύāĻžāωāĻĻāĻžāĻšāϰāĻŖ
HEADāĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻšā§‡āĻ•āφāωāϟ āĻ•āϰāĻž āĻŦā§āϰāĻžāĻžā§āϚ āϕ⧋āύāϟāĻž, āϤāĻžāϰ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏref: refs/heads/main āĻĻ⧇āĻ–āĻžāĻŦ⧇ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ main āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āĻĨāĻžāϕ⧇āύ
configāϞ⧋āĻ•āĻžāϞ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋāϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ (āϝ⧇āĻŽāύ āϰāĻŋāĻŽā§‹āϟ URL, āχāωāϜāĻžāϰ āχāύāĻĢā§‹ āχāĻ¤ā§āϝāĻžāĻĻāĻŋ)[remote "origin"] āĻāϰ āĻŽāϤ⧋ āĻāĻ¨ā§āĻŸā§āϰāĻŋ āĻĨāĻžāϕ⧇
refs/āĻŦā§āϰāĻžāĻžā§āϚ āĻāĻŦāĻ‚ āĻŸā§āϝāĻžāĻ— āϏāĻ‚āĻ•ā§āϰāĻžāĻ¨ā§āϤ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏrefs/heads/main, refs/tags/v1.0
objects/Git-āĻāϰ āϭ⧇āϤāϰ⧇āϰ āĻĄā§‡āϟāĻž — āĻ•āĻŽāĻŋāϟ, āĻĢāĻžāχāϞ āĻ•āύāĻŸā§‡āĻ¨ā§āϟ āχāĻ¤ā§āϝāĻžāĻĻāĻŋSHA āĻšā§āϝāĻžāĻļ āĻ…āύ⧁āϝāĻžā§Ÿā§€ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āĻ“ āĻĢāĻžāχāϞ āĻĨāĻžāϕ⧇
hooks/Git āĻšā§āĻ• āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ — āĻŦāĻŋāĻļ⧇āώ āχāϭ⧇āĻ¨ā§āĻŸā§‡āϰ āφāϗ⧇/āĻĒāϰ⧇ āϚāϞāĻž āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϝ⧇āĻŽāύ: pre-commit, post-merge
logs/āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋāϤ⧇ āĻ•āĻŋ āĻ•āĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦāĻž āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšā§Ÿā§‡āϛ⧇, āϤāĻžāϰ āϞāĻ—logs/HEAD āĻ āϏāĻ°ā§āĻŦāĻļ⧇āώ āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āϰ āϤāĻĨā§āϝ āĻĨāĻžāϕ⧇
indexāĻ¸ā§āĻŸā§‡āϜāĻŋāĻ‚ āĻāϰāĻŋ⧟āĻžāϤ⧇ āϕ⧋āύ āĻĢāĻžāχāϞ āφāϛ⧇, āϤāĻžāϰ āϤāĻžāϞāĻŋāĻ•āĻžgit add āĻĻāĻŋāϞ⧇ āφāĻĒāĻĄā§‡āϟ āĻšā§Ÿ
descriptionāĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ bare āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§ŸGitWeb āĻāϰ āĻŽāϤ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻŦāĻŋāĻŦāϰāĻŖ āĻĻ⧇āĻ–āĻžāύ⧋āϰ āϜāĻ¨ā§āϝ

🔍 āĻ•āĻŋāϛ⧁ āωāĻĻāĻžāĻšāϰāĻŖ ​

đŸŽ¯ HEAD āĻĢāĻžāχāϞ ​

bash
cat .git/HEAD
cat .git/HEAD

āφāωāϟāĻĒ⧁āϟ:

ref: refs/heads/main
ref: refs/heads/main

👉 āĻŦā§‹āĻāĻžā§Ÿ āφāĻĒāύāĻŋ āĻŦāĻ°ā§āϤāĻŽāĻžāύ⧇ main āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āφāϛ⧇āύāĨ¤

đŸŽ¯ config āĻĢāĻžāχāϞ ​

bash
cat .git/config
cat .git/config

āωāĻĻāĻžāĻšāϰāĻŖ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ:

ini
[user]
    name = Polash Mahmud
    email = polash@example.com

[remote "origin"]
    url = git@github.com:polash/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[user]
    name = Polash Mahmud
    email = polash@example.com

[remote "origin"]
    url = git@github.com:polash/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*

👉 āĻāχ āĻĢāĻžāχāϞāϟāĻŋ āφāĻĒāύāĻŋ āĻŽā§āϝāĻžāύ⧁⧟āĻžāϞāĻŋ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻ“ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

đŸŽ¯ objects/ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ ​

Git āϝāĻ–āύāχ āφāĻĒāύāĻŋ āϕ⧋āύ⧋ āĻĢāĻžāχāϞ add āĻ“ commit āĻ•āϰ⧇āύ, āϤāĻ–āύ Git āϏ⧇āχ āĻĢāĻžāχāϞ⧇āϰ āĻ•āύāĻŸā§‡āĻ¨ā§āϟāϕ⧇ SHA-1 āĻšā§āϝāĻžāĻļ āĻ•āϰ⧇ objects/ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇āĨ¤

bash
ls .git/objects/
ls .git/objects/

👉 āĻāĻ–āĻžāύ⧇ āĻĻ⧇āĻ–āĻŦ⧇āύ āĻ…āύ⧇āĻ• āϏāĻžāĻŦāĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āϝ⧇āĻŽāύ a3/, b4/, āĻĒā§āϰāϤāĻŋāϟāĻŋāχ āĻāĻ•āϟāĻŋ Git āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡āϰ āĻ…āĻ‚āĻļāĨ¤

đŸŽ¯ hooks/ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ ​

āĻāĻ–āĻžāύ⧇ āφāĻĒāύāĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āχāϭ⧇āĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āϚāĻžāύ commit āĻ•āϰāĻžāϰ āφāϗ⧇ āϞāĻŋāĻ¨ā§āϟāĻŋāĻ‚ āϚāĻžāϞāĻžāύ⧋ āĻšā§‹āĻ•:

bash
nano .git/hooks/pre-commit
nano .git/hooks/pre-commit
bash
#!/bin/sh
npm run lint
#!/bin/sh
npm run lint

👉 āĻāχ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϚāĻžāϞ⧁ āĻ•āϰāϤ⧇ chmod +x .git/hooks/pre-commit āĻĻāĻŋāϤ⧇ āĻšā§ŸāĨ¤

🧠 .git āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āϜāĻžāύāĻž āϕ⧇āύ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ? ​

  1. ✅ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ⧇ āϏāĻšāĻžā§ŸāĻ• āĻšāĻ āĻžā§Ž āĻŦā§āϰāĻžāĻžā§āϚ āĻŽāĻŋāϏ āĻšā§Ÿā§‡ āϗ⧇āϞ⧇ .git/HEAD āĻĢāĻžāχāϞ āĻĻ⧇āϖ⧇ āĻŦā§‹āĻāĻž āϝāĻžā§Ÿ āφāĻĒāύāĻŋ āϕ⧋āύ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āĻ›āĻŋāϞ⧇āύāĨ¤

  2. âš™ī¸ āĻ…ā§āϝāĻžāĻĄāĻ­āĻžāĻ¨ā§āϏāĻĄ Git āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇ āϏāĻšāĻžā§ŸāĻ• āϰāĻŋāĻĢ, āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻāĻŦāĻ‚ āϞāĻ— āĻĢāĻžāχāϞ āĻŽā§āϝāĻžāύāĻŋāĻĒ⧁āϞ⧇āϟ āĻ•āϰ⧇ āĻŽā§āϝāĻžāύ⧁⧟āĻžāϞāĻŋ āĻ•āĻžāϜ āĻ•āϰāĻž āϝāĻžā§Ÿ (āϝ⧇āĻŽāύ: āϰāĻŋāĻ•āĻ­āĻžāϰāĻŋ, āĻĄā§āϝāĻžāĻ™ā§āĻ—āϞāĻŋāĻ‚ āĻ•āĻŽāĻŋāϟ āωāĻĻā§āϧāĻžāϰ)āĨ¤

  3. đŸ§Ē Git Internals āĻļ⧇āĻ–āĻžāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ Git āĻāϰ āĻŸā§āϰāĻŋ, āĻŦā§āϞāĻŦ āĻ“ āĻ•āĻŽāĻŋāϟ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āϤāĻž āĻļāĻŋāĻ–āϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇āĨ¤

âš ī¸ āϏāϤāĻ°ā§āĻ•āϤāĻž ​

  • .git āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇āϰ āĻ•āĻŋāϛ⧁ āĻĢāĻžāχāϞ āĻŦāĻž āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āϭ⧁āϞ āĻ•āϰ⧇ āĻŽā§āϛ⧇ āĻĢ⧇āϞāϞ⧇ āĻĒ⧁āϰ⧋ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋ āύāĻˇā§āϟ āĻšā§Ÿā§‡ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • āĻāχ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻ­āĻžāϞ⧋āĻ­āĻžāĻŦ⧇ āĻœā§‡āύ⧇ āĻŦāĻž āĻŦā§āϝāĻžāĻ•āφāĻĒ āϰ⧇āϖ⧇ āĻ•āĻžāϜ āĻ•āϰ⧁āύāĨ¤

✅ āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇ ​

āύāĻžāĻŽāωāĻĻā§āĻĻ⧇āĻļā§āϝ
.git/HEADāϕ⧋āύ āĻŦā§āϰāĻžāĻžā§āϚ āĻ…ā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­
.git/objects/Git āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āϏāĻ‚āϰāĻ•ā§āώāĻŖ
.git/refs/āĻŦā§āϰāĻžāĻžā§āϚ āĻ“ āĻŸā§āϝāĻžāĻ—
.git/configāĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ
.git/hooks/āχāϭ⧇āĻ¨ā§āϟ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ
.git/logs/āχāϤāĻŋāĻšāĻžāϏ āϞāĻ—

Released under the MIT License.