đī¸ 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
āĻĢāĻžāĻāϞ â
cat .git/HEAD
cat .git/HEAD
āĻāĻāĻāĻĒā§āĻ:
ref: refs/heads/main
ref: refs/heads/main
đ āĻŦā§āĻāĻžā§ āĻāĻĒāύāĻŋ āĻŦāϰā§āϤāĻŽāĻžāύ⧠main
āĻŦā§āϰāĻžāĻā§āĻā§ āĻāĻā§āύāĨ¤
đ¯ config
āĻĢāĻžāĻāϞ â
cat .git/config
cat .git/config
āĻāĻĻāĻžāĻšāϰāĻŖ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ:
[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/
āĻĢā§āϞā§āĻĄāĻžāϰ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āĨ¤
ls .git/objects/
ls .git/objects/
đ āĻāĻāĻžāύ⧠āĻĻā§āĻāĻŦā§āύ āĻ
āύā§āĻ āϏāĻžāĻŦāĻĢā§āϞā§āĻĄāĻžāϰ āϝā§āĻŽāύ a3/
, b4/
, āĻĒā§āϰāϤāĻŋāĻāĻŋāĻ āĻāĻāĻāĻŋ Git āĻ
āĻŦāĻā§āĻā§āĻā§āϰ āĻ
āĻāĻļāĨ¤
đ¯ hooks/
āĻĢā§āϞā§āĻĄāĻžāϰ â
āĻāĻāĻžāύ⧠āĻāĻĒāύāĻŋ āĻŦāĻŋāĻāĻŋāύā§āύ āĻāĻā§āύā§āĻā§āϰ āĻāύā§āϝ āĻāĻžāϏā§āĻāĻŽ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āϰāĻžāĻāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻāĻžāύ commit
āĻāϰāĻžāϰ āĻāĻā§ āϞāĻŋāύā§āĻāĻŋāĻ āĻāĻžāϞāĻžāύ⧠āĻšā§āĻ:
nano .git/hooks/pre-commit
nano .git/hooks/pre-commit
#!/bin/sh
npm run lint
#!/bin/sh
npm run lint
đ āĻāĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻžāϞ⧠āĻāϰāϤ⧠chmod +x .git/hooks/pre-commit
āĻĻāĻŋāϤ⧠āĻšā§āĨ¤
đ§ .git
āĻĢā§āϞā§āĻĄāĻžāϰ āĻāĻžāύāĻž āĻā§āύ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ? â
â āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ⧠āϏāĻšāĻžā§āĻ āĻšāĻ āĻžā§ āĻŦā§āϰāĻžāĻā§āĻ āĻŽāĻŋāϏ āĻšā§ā§ āĻā§āϞā§
.git/HEAD
āĻĢāĻžāĻāϞ āĻĻā§āĻā§ āĻŦā§āĻāĻž āϝāĻžā§ āĻāĻĒāύāĻŋ āĻā§āύ āĻŦā§āϰāĻžāĻā§āĻā§ āĻāĻŋāϞā§āύāĨ¤âī¸ āĻ ā§āϝāĻžāĻĄāĻāĻžāύā§āϏāĻĄ Git āĻŦā§āϝāĻŦāĻšāĻžāϰ⧠āϏāĻšāĻžā§āĻ āϰāĻŋāĻĢ, āĻ āĻŦāĻā§āĻā§āĻ āĻāĻŦāĻ āϞāĻ āĻĢāĻžāĻāϞ āĻŽā§āϝāĻžāύāĻŋāĻĒā§āϞā§āĻ āĻāϰ⧠āĻŽā§āϝāĻžāύā§ā§āĻžāϞāĻŋ āĻāĻžāĻ āĻāϰāĻž āϝāĻžā§ (āϝā§āĻŽāύ: āϰāĻŋāĻāĻāĻžāϰāĻŋ, āĻĄā§āϝāĻžāĻā§āĻāϞāĻŋāĻ āĻāĻŽāĻŋāĻ āĻāĻĻā§āϧāĻžāϰ)āĨ¤
đ§Ē Git Internals āĻļā§āĻāĻžāϰ āĻāĻŋāϤā§āϤāĻŋ Git āĻāϰ āĻā§āϰāĻŋ, āĻŦā§āϞāĻŦ āĻ āĻāĻŽāĻŋāĻ āĻ āĻŦāĻā§āĻā§āĻ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰ⧠āϤāĻž āĻļāĻŋāĻāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤
â ī¸ āϏāϤāϰā§āĻāϤāĻž â
.git
āĻĢā§āϞā§āĻĄāĻžāϰā§āϰ āĻāĻŋāĻā§ āĻĢāĻžāĻāϞ āĻŦāĻž āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ āĻā§āϞ āĻāϰ⧠āĻŽā§āĻā§ āĻĢā§āϞāϞ⧠āĻĒā§āϰ⧠āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āύāώā§āĻ āĻšā§ā§ āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤- āĻāĻ āĻĢā§āϞā§āĻĄāĻžāϰ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻžāϰ āĻāĻā§ āĻāĻžāϞā§āĻāĻžāĻŦā§ āĻā§āύ⧠āĻŦāĻž āĻŦā§āϝāĻžāĻāĻāĻĒ āϰā§āĻā§ āĻāĻžāĻ āĻāϰā§āύāĨ¤
â āϏāĻāĻā§āώā§āĻĒā§ â
āύāĻžāĻŽ | āĻāĻĻā§āĻĻā§āĻļā§āϝ |
---|---|
.git/HEAD | āĻā§āύ āĻŦā§āϰāĻžāĻā§āĻ āĻ ā§āϝāĻžāĻā§āĻāĻŋāĻ |
.git/objects/ | Git āĻ āĻŦāĻā§āĻā§āĻ āϏāĻāϰāĻā§āώāĻŖ |
.git/refs/ | āĻŦā§āϰāĻžāĻā§āĻ āĻ āĻā§āϝāĻžāĻ |
.git/config | āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ |
.git/hooks/ | āĻāĻā§āύā§āĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ |
.git/logs/ | āĻāϤāĻŋāĻšāĻžāϏ āϞāĻ |