Git ๐ŸŒ™
ko โ–พ Topics โ–พ Latest version โ–พ gitglossary last updated in 2.46.0

์ด๋ฆ„

gitglossary - ๊นƒ ์šฉ์–ด์ง‘

์‹œ๋†‰์‹œ์Šค

*

์„ค๋ช…

๋Œ€์ฒด ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋Œ€์ฒด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์ €์žฅ๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ์ž์‹ ์˜ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์˜ ์ผ๋ถ€๋ฅผ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ "๋Œ€์ฒด(alternate)"๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ ์–ด ์ €์žฅ์†Œ

๋ฒ ์–ด ์ €์žฅ์†Œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ .git ์ ‘๋ฏธ์‚ฌ๋ฅผ ๊ฐ€์ง„ ์ ์ ˆํžˆ ๋ช…๋ช…๋œ ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด ์ €์žฅ์†Œ์—๋Š” ๋ฆฌ๋น„์ „ ๊ด€๋ฆฌ ๋Œ€์ƒ ํŒŒ์ผ์˜ ๋กœ์ปฌ๋กœ ์ฒดํฌ์•„์›ƒ๋œ ์‚ฌ๋ณธ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆจ๊ฒจ์ง„ `.git`ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ณดํ†ต ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๊นƒ ๊ด€๋ฆฌ ๋ฐ ์ œ์–ด ํŒŒ์ผ์€ ์ง์ ‘์ ์œผ๋กœ `repository.git`๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ํŒŒ์ผ์€ ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ์ฒดํฌ์•„์›ƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณต๊ฐœ ์ €์žฅ์†Œ์˜ ๊ฒŒ์‹œ์ž๋“ค์€ ๋ฒ ์–ด ์ €์žฅ์†Œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

blob ๊ฐ์ฒด

์œ ํ˜•์ด ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฐ์ฒด, ์˜ˆ: ํŒŒ์ผ์˜ ๋‚ด์šฉ.

๋ถ„๊ธฐ

A "branch" is a line of development. The most recent commit on a branch is referred to as the tip of that branch. The tip of the branch is referenced by a branch head, which moves forward as additional development is done on the branch. A single Git repository can track an arbitrary number of branches, but your working tree is associated with just one of them (the "current" or "checked out" branch), and HEAD points to that branch.

์บ์‹œ

๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ: ์ธ๋ฑ์Šค.

์ฒด์ธ

๋ชฉ๋ก์˜ ๊ฐ ๊ฐ์ฒด์— ํ›„์† ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ํฌํ•จ๋œ ๊ฐ์ฒด ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค(์˜ˆ: ์ปค๋ฐ‹์˜ ํ›„์† ํ•ญ๋ชฉ์€ ๋ถ€๋ชจ๋“ค ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ).

๋ณ€๊ฒฝ์ง‘ํ•ฉ(changeset)

BitKeeper/cvsps๋Š” "์ปค๋ฐ‹"์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊นƒ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๊นƒ์—์„œ "changesets"๋ผ๋Š” ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ง์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฒดํฌ์•„์›ƒ

์ž‘์—… ํŠธ๋ฆฌ์˜ ์ „์ฒด ๋˜๋Š” ์ผ๋ถ€๋ฅผ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠธ๋ฆฌ ๊ฐ์ฒด๋‚˜ ๋ธ”๋กญ(blob)์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ณ , ์ž‘์—… ํŠธ๋ฆฌ ์ „์ฒด๊ฐ€ ์ƒˆ ๋ถ„๊ธฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๋˜์–ด ์žˆ๋‹ค๋ฉด ์ธ๋ฑ์Šค ์™€ HEAD๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋™์ž‘์ž…๋‹ˆ๋‹ค.

์ฒด๋ฆฌํ”ผํ‚น((์ปค๋ฐ‹) ๋นผ์˜ค๊ธฐ)

SCM ์šฉ์–ด๋กœ์„œ "์ฒด๋ฆฌํ”ฝ(cherry pick)"์€ ์ผ๋ จ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ(์ผ๋ฐ˜์ ์œผ๋กœ ์ปค๋ฐ‹) ์ค‘ ์ผ๋ถ€๋ฅผ ์„ ํƒํ•˜์—ฌ ๋‹ค๋ฅธ ์ฝ”๋“œ๋ฒ ์ด์Šค ์œ„์— ์ƒˆ๋กœ์šด ์ผ๋ จ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Git์—์„œ๋Š” "git cherry-pick" ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด ์ปค๋ฐ‹์—์„œ ๋„์ž…๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ถœํ•˜๊ณ  ํ˜„์žฌ ๋ถ„๊ธฐ ์˜ ๋์„ ๊ธฐ์ค€์œผ๋กœ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์œผ๋กœ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

ํด๋ฆฐ

ํ˜„์žฌ ํ—ค๋“œ๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๋ฆฌ๋น„์ „์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ, ์ž‘์—… ํŠธ๋ฆฌ ๋ฅผ ํด๋ฆฐ(clean)ํ•˜๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. "dirty"๋„ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”.

์ปค๋ฐ‹

As a noun: A single point in the Git history; the entire history of a project is represented as a set of interrelated commits. The word "commit" is often used by Git in the same places other revision control systems use the words "revision" or "version". Also used as a short hand for commit object.

๋™์‚ฌ๋กœ์„œ: ์ธ๋ฑ์Šค์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์„ ์ƒ์„ฑํ•˜๊ณ  HEAD๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ƒํƒœ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์Šค๋ƒ…์ƒท์„ ๊นƒ ํžˆ์Šคํ† ๋ฆฌ์— ์ €์žฅํ•˜๋Š” ๋™์ž‘์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ปค๋ฐ‹ ๊ทธ๋ž˜ํ”„์˜ ๊ฐœ๋…, ํ‘œํ˜„ ๋ฐ ์‚ฌ์šฉ๋ฒ•

A synonym for the DAG structure formed by the commits in the object database, referenced by branch tips, using their chain of linked commits. This structure is the definitive commit graph. The graph can be represented in other ways, e.g. the "commit-graph" file.

์ปค๋ฐ‹-๊ทธ๋ž˜ํ”„ ํŒŒ์ผ

"์ปค๋ฐ‹-๊ทธ๋ž˜ํ”„"(์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜์ดํ”ˆ์œผ๋กœ ๊ตฌ๋ถ„๋˜๋Š”) ํŒŒ์ผ์€ ์ปค๋ฐ‹ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์„ ๊ฐ€์†ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ณด์กฐ ํ‘œํ˜„์ž…๋‹ˆ๋‹ค. "commit-graph" ํŒŒ์ผ์€ .git/objects/info ๋””๋ ‰ํ† ๋ฆฌ๋‚˜ ๋Œ€์ฒด ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ info ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

์ปค๋ฐ‹ ๊ฐ์ฒด(commit object)

ํŠน์ • ๋ฆฌ๋น„์ „์— ๋Œ€ํ•œ ๋ถ€๋ชจ, ์ปค๋ฏธํ„ฐ, ์ž‘์„ฑ์ž, ๋‚ ์งœ ๋ฐ ์ €์žฅ๋œ ๋ฆฌ๋น„์ „์˜ ์ตœ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— ํ•ด๋‹นํ•˜๋Š” ํŠธ๋ฆฌ ๊ฐ์ฒด์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

์œ ์‚ฌ ์ปค๋ฐ‹(commit-ish, also committish)

A commit object or an object that can be recursively dereferenced to a commit object. The following are all commit-ishes: a commit object, a tag object that points to a commit object, a tag object that points to a tag object that points to a commit object, etc.

์ฝ”์–ด ๊นƒ(core Git)

๊นƒ์˜ ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋กœ, ์ œํ•œ๋œ ์†Œ์Šค ์ฝ”๋“œ ๊ด€๋ฆฌ ๋„๊ตฌ๋งŒ์„ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

DAG

์œ ํ–ฅ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„(Directed Acyclic Graph). ๊นƒ์—์„œ ์ปค๋ฐ‹ ๊ฐ์ฒด๋“ค์€ ๋ฐฉํ–ฅ์„ฑ์ด ์žˆ๋Š” ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„์ธ ์œ ํ–ฅ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ปค๋ฐ‹ ๊ฐ์ฒด๋“ค์ด ๋ถ€๋ชจ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉํ–ฅ์„ฑ์„ ๊ฐ€์ง€๋ฉฐ, ์ปค๋ฐ‹ ๊ฐ์ฒด๋“ค์˜ ๊ทธ๋ž˜ํ”„๋Š” ์‚ฌ์ดํด์ด ์—†์Šต๋‹ˆ๋‹ค(์‹œ์ž‘๊ณผ ๋์ด ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๋Š” ์ฒด์ธ์€ ์—†์Šต๋‹ˆ๋‹ค).

๋Œ•๊ธ€๋ง ๊ฐ์ฒด(dangling object)

๋„๋‹ฌ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋‹ค๋ฅธ ๊ฐ์ฒด์—์„œ๋„ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์€ ๋„๋‹ฌ ๋ถˆ๊ฐ€๋Šฅ ๊ฐ์ฒด๋กœ, ๋Œ•๊ธ€๋ง ๊ฐ์ฒด๋Š” ์–ด๋– ํ•œ ์ฐธ์กฐ๋‚˜ ์ €์žฅ์†Œ ๋‚ด์— ์žˆ๋Š” ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ๋„ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ์ƒํƒœ๋กœ ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

dereference

๏ปฟ๊ธฐํ˜ธ ์ฐธ์กฐ ์ฐธ์กฐ: ๊ธฐํ˜ธ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ์— ์ ‘๊ทผํ•˜๋Š” ๋™์ž‘์ž…๋‹ˆ๋‹ค. ์žฌ๊ท€์  ์—ญ์ฐธ์กฐ๋Š” ๋น„๊ธฐํ˜ธ์  ์ฐธ์กฐ๊ฐ€ ๋ฐœ๊ฒฌ๋  ๋•Œ๊นŒ์ง€ ๊ฒฐ๊ณผ ์ฐธ์กฐ์— ๋Œ€ํ•ด ์•ž์„œ ํ•œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๏ปฟํƒœ๊ทธ ๊ฐ์ฒด ์ฐธ์กฐ: ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๋Š” ๋™์ž‘์ž…๋‹ˆ๋‹ค. ํƒœ๊ทธ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์ง€์ •๋œ ๊ฐ์ฒด ์œ ํ˜•(์ ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ) ๋˜๋Š” ๋น„ํƒœ๊ทธ ๊ฐ์ฒด ์œ ํ˜•์„ ๊ฐ€์งˆ ๋•Œ๊นŒ์ง€ ๊ฒฐ๊ณผ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์žฌ๊ท€์ ์œผ๋กœ ์—ญ์ฐธ์กฐ๋ฉ๋‹ˆ๋‹ค. ํƒœ๊ทธ์˜ ๋งฅ๋ฝ์—์„œ โ€œ์žฌ๊ท€์  ์—ญ์ฐธ์กฐโ€์˜ ๋™์˜์–ด๋Š” ๊ป์งˆ์ž…๋‹ˆ๋‹ค.

๏ปฟ์ปค๋ฐ‹ ๊ฐ์ฒด ์ฐธ์กฐ: ์ปค๋ฐ‹ ํŠธ๋ฆฌ ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๋Š” ๋™์ž‘. ์ปค๋ฐ‹์€ ์žฌ๊ท€์ ์œผ๋กœ ์—ญ์ฐธ์กฐ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๏ปฟ๋ณ„๋„๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ํ•œ, Git ๋ช…๋ น์–ด ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์˜ ๋งฅ๋ฝ์—์„œ ์‚ฌ์šฉ๋˜๋Š” โ€œ์—ญ์ฐธ์กฐโ€๋Š” ์•”์‹œ์ ์œผ๋กœ ์žฌ๊ท€์ ์ž…๋‹ˆ๋‹ค.

๋ถ„๋ฆฌ๋œ HEAD(detached HEAD)

Normally the HEAD stores the name of a branch, and commands that operate on the history HEAD represents operate on the history leading to the tip of the branch the HEAD points at. However, Git also allows you to check out an arbitrary commit that isn’t necessarily the tip of any particular branch. The HEAD in such a state is called "detached".

Note that commands that operate on the history of the current branch (e.g. git commit to build a new history on top of it) still work while the HEAD is detached. They update the HEAD to point at the tip of the updated history without affecting any branch. Commands that update or inquire information about the current branch (e.g. git branch --set-upstream-to that sets what remote-tracking branch the current branch integrates with) obviously do not work, as there is no (real) current branch to ask about in this state.

๋””๋ ‰ํ† ๋ฆฌ(directory)

"ls"๋กœ ํ‘œ์‹œ๋˜๋Š” ๋ฆฌ์ŠคํŠธ :-)

๋”ํ‹ฐ(dirty)

ํ˜„์žฌ ๋ถ„๊ธฐ์— ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์ด ์ž‘์—… ํŠธ๋ฆฌ๋Š” "๋”ํ‹ฐ(dirty)" ์ƒํƒœ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์•…ํ•œ ๋ณ‘ํ•ฉ(evil merge)

An evil merge is a merge that introduces changes that do not appear in any parent.

์ •๋ฐฉํ–ฅ ์ง„ํ–‰(fast-forward)

์ •๋ฐฉํ–ฅ ์ง„ํ–‰(fast-forward)์€ ํŠน์ •ํ•œ ์œ ํ˜•์˜ ๋ณ‘ํ•ฉ์œผ๋กœ, ํ˜„์žฌ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฆฌ๋น„์ „๊ณผ ๋™์ผํ•œ ์กฐ์ƒ์„ ๊ฐ€์ง„ ๋‹ค๋ฅธ ๋ถ„๊ธฐ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ "๋ณ‘ํ•ฉ"ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ์ƒˆ๋กœ์šด ๋ณ‘ํ•ฉ ์ปค๋ฐ‹ ์„ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๋Œ€์‹  ๋ถ„๊ธฐ๋ฅผ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ถ„๊ธฐ์™€ ๋™์ผํ•œ ๋ฆฌ๋น„์ „์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์€ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์›๊ฒฉ ์ถ”์  ๋ถ„๊ธฐ์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽ˜์น˜(fetch)

Fetching a branch means to get the branch’s head ref from a remote repository, to find out which objects are missing from the local object database, and to get them, too. See also git-fetch[1].

ํŒŒ์ผ ์‹œ์Šคํ…œ(file system)

๋ฆฌ๋ˆ„์Šค ํ† ๋ฅด๋ฐœ์Šค๋Š” ์ฒ˜์Œ ๊นƒ์„ ์„ค๊ณ„ํ•  ๋•Œ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ณด์œ ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊นƒ์˜ ํšจ์œจ์„ฑ๊ณผ ์†๋„๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊นƒ ์•„์นด์ด๋ธŒ(Git archive)

์ €์žฅ์†Œ์˜ ๋™์˜์–ด (arch ์‚ฌ์šฉ์ž ๋Œ€์ƒ).

๊นƒ ํŒŒ์ผ(gitfile)

A plain file .git at the root of a working tree that points at the directory that is the real repository. For proper use see git-worktree[1] or git-submodule[1]. For syntax see gitrepository-layout[5].

์ด์‹(grafts)

์ด์‹(Grafts)์€ ์ปค๋ฐ‹์— ๋Œ€ํ•œ ๊ฐ€์งœ ์กฐ์ƒ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•จ์œผ๋กœ์จ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐœ๋ฐœ ๋ผ์ธ์„ ํ•จ๊ป˜ ์—ฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊นƒ์ด ์ปค๋ฐ‹์˜ ๋ถ€๋ชจ ์ง‘ํ•ฉ์ด ์ปค๋ฐ‹์ด ์ƒ์„ฑ๋  ๋•Œ ๊ธฐ๋ก๋œ ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `.git/info/grafts`ํŒŒ์ผ์„ ํ†ตํ•ด ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์‹(grafts) ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์˜ค๋ž˜๋˜์—ˆ๊ณ , ์ €์žฅ์†Œ ๊ฐ„ ๊ฐ์ฒด ์ „์†ก์— ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋” ์œ ์—ฐํ•˜๊ณ  ๊ฒฌ๊ณ ํ•œ ์‹œ์Šคํ…œ์œผ๋กœ์„œ git-replace[1]๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ•ด์‹œ(hash)

Git์˜ ๋ฌธ๋งฅ์—์„œ ๊ฐ์ฒด๋ช…์— ๋Œ€ํ•œ ๋™์˜์–ด.

ํ—ค๋“œ(head)

A named reference to the commit at the tip of a branch. Heads are stored in a file in $GIT_DIR/refs/heads/ directory, except when using packed refs. (See git-pack-refs[1].)

HEAD

The current branch. In more detail: Your working tree is normally derived from the state of the tree referred to by HEAD. HEAD is a reference to one of the heads in your repository, except when using a detached HEAD, in which case it directly references an arbitrary commit.

ํ—ค๋“œ ๋ ˆํผ๋Ÿฐ์Šค(head ref)

ํ—ค๋“œ์™€ ๋™์˜์–ด.

ํ›…(hook)

์—ฌ๋Ÿฌ ๊นƒ ๋ช…๋ น์˜ ์ •์ƒ์ ์ธ ์‹คํ–‰ ์ค‘์—๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ๋Šฅ ๋˜๋Š” ํ™•์ธ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์„ ํƒ์ ์ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ›…(hooks)์€ ๋ช…๋ น์ด ์‚ฌ์ „์— ํ™•์ธ๋˜๊ณ  ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ฉฐ, ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ›„์— ํ›„์† ์•Œ๋ฆผ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ›… ์Šคํฌ๋ฆฝํŠธ๋Š”`$GIT_DIR/hooks/`๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŒŒ์ผ๋ช…์—์„œ `.sample`์ ‘๋ฏธ์‚ฌ๋ฅผ ์ œ๊ฑฐํ•จ์œผ๋กœ์จ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๋ฒ„์ „์˜ ๊นƒ์—์„œ๋Š” ์ด๊ฒƒ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง์ ‘ ๋งŒ๋“ค์–ด์•ผ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค(index)

ํŒŒ์ผ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ , ๋‚ด์šฉ์€ ๊ฐ์ฒด๋กœ ์ €์žฅ๋˜๋Š” ํŒŒ์ผ์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” ์ž‘์—… ํŠธ๋ฆฌ์˜ ์ €์žฅ๋œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ์ธ๋ฑ์Šค์—๋Š” ์ž‘์—… ํŠธ๋ฆฌ์˜ ๋‘ ๋ฒˆ์งธ ๋˜๋Š” ์„ธ ๋ฒˆ์งธ ๋ฒ„์ „์„ ํฌํ•จํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๋ณ‘ํ•ฉ์‹œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ์—”ํŠธ๋ฆฌ(index entry)

์ธ๋ฑ์Šค์— ์ €์žฅ๋œ ํŠน์ • ํŒŒ์ผ์— ๋Œ€ํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ์—”ํŠธ๋ฆฌ๋Š” ๋ณ‘ํ•ฉ์ด ์‹œ์ž‘๋˜์—ˆ์ง€๋งŒ ์•„์ง ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ(์ฆ‰, ์ธ๋ฑ์Šค์— ํ•ด๋‹น ํŒŒ์ผ์˜ ์—ฌ๋Ÿฌ ๋ฒ„์ „์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ) ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์€ ์ƒํƒœ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

master

๊ธฐ๋ณธ ๊ฐœ๋ฐœ ๋ถ„๊ธฐ์ž…๋‹ˆ๋‹ค. ๊นƒ ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค "master"๋ผ๋Š” ์ด๋ฆ„์˜ ๋ถ„๊ธฐ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ํ™œ์„ฑ ๋ถ„๊ธฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ, ์ด ๋ถ„๊ธฐ์—๋Š” ๋กœ์ปฌ ๊ฐœ๋ฐœ์ด ํฌํ•จ๋˜์ง€๋งŒ, ์ด๋Š” ์ˆœ์ˆ˜ํžˆ ๊ด€๋ก€์ ์ธ ๊ฒƒ์ผ ๋ฟ์ด๋ฉฐ ํ•„์ˆ˜์ ์ธ ์š”๊ตฌ์‚ฌํ•ญ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋ณ‘ํ•ฉ(merge)

As a verb: To bring the contents of another branch (possibly from an external repository) into the current branch. In the case where the merged-in branch is from a different repository, this is done by first fetching the remote branch and then merging the result into the current branch. This combination of fetch and merge operations is called a pull. Merging is performed by an automatic process that identifies changes made since the branches diverged, and then applies all those changes together. In cases where changes conflict, manual intervention may be required to complete the merge.

As a noun: unless it is a fast-forward, a successful merge results in the creation of a new commit representing the result of the merge, and having as parents the tips of the merged branches. This commit is referred to as a "merge commit", or sometimes just a "merge".

๊ฐ์ฒด(object)

๊นƒ์˜ ์ €์žฅ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ ์˜ SHA-1์„ ํ†ตํ•ด ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ์ฒด๋Š” ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(object database)

์ผ๋ จ์˜ "๊ฐ์ฒด(objects)"๋ฅผ ์ €์žฅํ•˜๋ฉฐ, ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋Š” ๊ทธ ๊ฐ์ฒด๋ช…์„ ํ†ตํ•ด ์‹๋ณ„๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ฒด๋“ค์€`$GIT_DIR/objects/`๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด ์‹๋ณ„์ž(object identifier, oid)

๊ฐ์ฒด๋ช…๊ณผ ๋™์˜์–ด.

๊ฐ์ฒด๋ช…(object name)

The unique identifier of an object. The object name is usually represented by a 40 character hexadecimal string. Also colloquially called SHA-1.

๊ฐ์ฒด ํƒ€์ž…(object type)

One of the identifiers "commit", "tree", "tag" or "blob" describing the type of an object.

์˜ฅํ† ํผ์Šค(octopus)

๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ถ„๊ธฐ๋ฅผ ๋ณ‘ํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

orphan

๏ปฟ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฐ€์ง€ (์ฆ‰, ํƒœ์–ด๋‚˜์ง€ ์•Š์€ ๊ฐ€์ง€)์— ์˜ฌ๋ผํƒ€๋Š” ํ–‰์œ„์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—… ํ›„์—๋Š” ์ฒ˜์Œ ์ƒ์„ฑ๋œ ์ปค๋ฐ‹์ด ์ƒ์œ„ ์ปค๋ฐ‹์ด ์•„๋‹Œ ์ƒˆ๋กœ์šด ๊ธฐ๋ก์„ ์‹œ์ž‘ํ•˜๋Š” ์ปค๋ฐ‹์ด ๋ฉ๋‹ˆ๋‹ค.

origin

๊ธฐ๋ณธ ์ƒ์œ„ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ๋Š” ์ถ”์ ํ•˜๋Š” ์ƒ์œ„ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ตœ์†Œํ•œ ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ 'origin’์ด ๊ทธ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ƒ์œ„ ์—…๋ฐ์ดํŠธ๋Š” origin/name-of-upstream-branch๋ผ๋Š” ์ด๋ฆ„์˜ ์›๊ฒฉ ์ถ”์  ๋ถ„๊ธฐ๋กœ fetch๋˜๋ฉฐ, ์ด๋ฅผ git branch -r ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฒ„๋ ˆ์ด(overlay)

Only update and add files to the working directory, but don’t delete them, similar to how cp -R would update the contents in the destination directory. This is the default mode in a checkout when checking out files from the index or a tree-ish. In contrast, no-overlay mode also deletes tracked files not present in the source, similar to rsync --delete.

ํŒฉ(pack)

๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ฑฐ๋‚˜ ํšจ์œจ์ ์œผ๋กœ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ์••์ถ•ํ•œ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

ํŒฉ ์ธ๋ฑ์Šค(pack index)

ํŒฉ์˜ ๊ฐ์ฒด๋“ค์˜ ์‹๋ณ„์ž์™€ ๋‹ค๋ฅธ ์ •๋ณด๋“ค์„ ํฌํ•จํ•œ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํŒฉ์˜ ๋‚ด์šฉ์— ํšจ์œจ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๋„์›€์„ ์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๋กœ๋ช…์„ธ(pathspec)

๊นƒ ๋ช…๋ น์–ด์—์„œ ๊ฒฝ๋กœ๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

Pathspecs are used on the command line of "git ls-files", "git ls-tree", "git add", "git grep", "git diff", "git checkout", and many other commands to limit the scope of operations to some subset of the tree or working tree. See the documentation of each command for whether paths are relative to the current directory or toplevel. The pathspec syntax is as follows:

  • ์–ด๋–ค ๊ฒฝ๋กœ๋“  ์ž๊ธฐ ์ž์‹ ๊ณผ ์ผ์น˜

  • the pathspec up to the last slash represents a directory prefix. The scope of that pathspec is limited to that subtree.

  • the rest of the pathspec is a pattern for the remainder of the pathname. Paths relative to the directory prefix will be matched against that pattern using fnmatch(3); in particular, * and ? can match directory separators.

์˜ˆ๋ฅผ ๋“ค์–ด, Documentation/*.jpg๋Š” Documentation ์„œ๋ธŒํŠธ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  .jpg ํŒŒ์ผ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Documentation/chapter_1/figure_1.jpg๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

A pathspec that begins with a colon : has special meaning. In the short form, the leading colon : is followed by zero or more "magic signature" letters (which optionally is terminated by another colon :), and the remainder is the pattern to match against the path. The "magic signature" consists of ASCII symbols that are neither alphanumeric, glob, regex special characters nor colon. The optional colon that terminates the "magic signature" can be omitted if the pattern begins with a character that does not belong to "magic signature" symbol set and is not a colon.

๊ธด ํ˜•์‹์—์„œ๋Š” ์„ ํ–‰ํ•˜๋Š” ์ฝœ๋ก  : ๋‹ค์Œ์— ์—ฌ๋Š” ๊ด„ํ˜ธ (, ์˜๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ "๋งค์ง ์›Œ๋“œ"์˜ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ฆฌ์ŠคํŠธ(0๊ฐœ ์ด์ƒ), ๊ทธ๋ฆฌ๊ณ  ๋‹ซ๋Š” ๊ด„ํ˜ธ `)`๊ฐ€ ์˜ต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€๋Š” ๊ฒฝ๋กœ์™€ ์ผ์น˜์‹œํ‚ฌ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ ์ฝœ๋ก ๋งŒ ์žˆ๋Š” ๊ฒฝ๋กœ๋ช…์„ธ๋Š” "๊ฒฝ๋กœ๋ช…์„ธ๊ฐ€ ์—†์Œ"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ํ˜•์‹์€ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ช…์„ธ์™€ ๊ฒฐํ•ฉํ•ด์„œ ์‚ฌ์šฉ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

top

๋งค์ง ์›Œ๋“œ์ธ top(๋งค์ง ์‹œ๊ทธ๋‹ˆ์ฒ˜: /)๋Š” ํŒจํ„ด์ด ์ž‘์—… ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๋ถ€ํ„ฐ ์ผ์น˜ํ•˜๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋Š” ํ˜„์žฌ ์ž‘์—… ์ค‘์ธ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋”๋ผ๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

literal

ํŒจํ„ด ๋‚ด์˜ * ๋˜๋Š” `?`์™€ ๊ฐ™์€ ์™€์ผ๋“œ์นด๋“œ๋Š” ๋ฆฌํ„ฐ๋Ÿด ๋ฌธ์ž๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

icase

๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์ด ๋งค์น˜.

glob

Git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname. For example, "Documentation/*.html" matches "Documentation/git.html" but not "Documentation/ppc/ppc.html" or "tools/perf/Documentation/perf.html".

ํŒจํ„ด ๋‚ด์—์„œ ์ „์ฒด ๊ฒฝ๋กœ๋ช…์— ๋Œ€ํ•ด ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ, ๋‘ ๊ฐœ์˜ ์—ฐ์†๋œ ๋ณ„ํ‘œ("**")๋Š” ํŠน๋ณ„ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์Šฌ๋ž˜์‹œ ๋’ค์— ์˜ค๋Š” ์„ ๋‘์˜ "**"๋Š” ๋ชจ๋“  ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "**/foo"๋Š” ์–ด๋””์—์„œ๋‚˜ ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ "foo"์™€ ์ผ์น˜ํ•˜๋ฉฐ, ํŒจํ„ด "foo"์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. "**/foo/bar"๋Š” "foo" ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ”๋กœ ์•„๋ž˜์— ์žˆ๋Š” ์–ด๋Š ๊ณณ์—์„œ๋‚˜ ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ "bar"์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ง๋ฏธ์˜ "/**"๋Š” ๊ทธ ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ๊ณผ ๋งค์น˜๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "abc/**"๋Š” ๋””๋ ‰ํ† ๋ฆฌ "abc" ๋‚ด์˜ ๋ชจ๋“  ํŒŒ์ผ์— ๋งค์น˜๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” .gitignore ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋ฉฐ, ๊นŠ์ด๋Š” ๋ฌดํ•œ์ž…๋‹ˆ๋‹ค.

  • ๋ง๋ฏธ ์ด์™ธ์—์„œ์˜ "/**"๋Š” 0๊ฐœ ์ด์ƒ์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ๋งค์น˜๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "a/**/b"๋Š” "a/b", "a/x/b", "a/x/y/b"์™€ ๊ฐ™์€ ์‹์œผ๋กœ ๋งค์น˜๋ฉ๋‹ˆ๋‹ค.

  • ์ด ์ด์™ธ์˜ ์—ฐ์†๋œ ๋ณ„ํ‘œ๋Š” ๋ฌดํšจ๋กœ ์ทจ๊ธ‰๋ฉ๋‹ˆ๋‹ค.

    ๊ธ€๋กœ๋ธŒ ๋งค์ง๊ณผ ๋ฆฌํ„ฐ๋Ÿด ๋งค์ง์€ ์„œ๋กœ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

attr

After attr: comes a space separated list of "attribute requirements", all of which must be met in order for the path to be considered a match; this is in addition to the usual non-magic pathspec pattern matching. See gitattributes[5].

ํŒจ์Šค์˜ ๊ฐ ์†์„ฑ ์š”๊ตฌ์‚ฌํ•ญ์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์˜ ํ˜•์‹์„ ์ทจํ•ฉ๋‹ˆ๋‹ค:

  • "ATTR"์€ ์†์„ฑ `ATTR`์ด ์„ค์ •๋˜์–ด์•ผ ํ•จ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

  • "-ATTR"์€ ์†์„ฑ `ATTR`์ด ์„ค์ •๋˜์ง€ ์•Š์•„์•ผ ํ•จ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

  • "ATTR=VALUE"๋Š” ์†์„ฑ `ATTR`์ด ๋ฌธ์ž์—ด `VALUE`๋กœ ์„ค์ •๋˜์–ด์•ผ ํ•จ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

  • "!ATTR"์€ ์†์„ฑ `ATTR`์ด ์ง€์ •๋˜์ง€ ์•Š์•„์•ผ ํ•จ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

    ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ ํŠธ๋ฆฌ ๊ฐ์ฒด์™€ ๋งค์น˜์‹œํ‚ฌ ๋•Œ ์†์„ฑ์€ ์ฃผ์–ด์ง„ ํŠธ๋ฆฌ ๊ฐ์ฒด์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ž‘์—… ํŠธ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

exclude

After a path matches any non-exclude pathspec, it will be run through all exclude pathspecs (magic signature: ! or its synonym ^). If it matches, the path is ignored. When there is no non-exclude pathspec, the exclusion is applied to the result set as if invoked without any pathspec.

๋ถ€๋ชจ(parent)

์ปค๋ฐ‹ ๊ฐ์ฒด์—๋Š” ๊ฐœ๋ฐœ ๋ผ์ธ์—์„œ์˜ ๋…ผ๋ฆฌ์  ์กฐ์ƒ, ์ฆ‰ ๊ทธ ๋ถ€๋ชจ(๋น„์–ด์žˆ์„ ์ˆ˜๋„ ์žˆ์Œ) ๋ชฉ๋ก์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

peel

๏ปฟํƒœ๊ทธ ๊ฐ์ฒด๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ์—ญ์ฐธ์กฐํ•˜๋Š” ๋™์ž‘์ž…๋‹ˆ๋‹ค.

๊ณก๊ดญ์ด(pickaxe)

๊ณก๊ดญ์ด๋ผ๋Š” ์šฉ์–ด๋Š” ์ฃผ์–ด์ง„ ํ…์ŠคํŠธ ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์„ ํƒํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” diffcore ๋ฃจํ‹ด์˜ ์˜ต์…˜์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. `--pickaxe-all`์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ํ…์ŠคํŠธ ์ค„์„ ๋„์ž…ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•œ ์ „์ฒด ๋ณ€๊ฒฝ ์„ธํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. git-diff[1]๋ฅผ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”.

๋ฐฐ๊ด€(plumbing)

์ฝ”์–ด ๊นƒ์˜ ์• ์นญ.

์ž๊ธฐ(porcelain)

์ฝ”์–ด ๊นƒ์— ์˜์กดํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ํ”„๋กœ๊ทธ๋žจ ๋ชจ์Œ์˜ ์• ์นญ์œผ๋กœ, ์ฝ”์–ด ๊นƒ์— ๋Œ€ํ•œ ๊ณ ์ˆ˜์ค€ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Porcelain์€ ๋ฐฐ๊ด€๋ณด๋‹ค ๋” ๋งŽ์€ SCM ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—…ํŠธ๋ฆฌ๋ณ„ ๋ ˆํผ๋Ÿฐ์Šค(per-worktree ref)

Refs that are per-worktree, rather than global. This is presently only HEAD and any refs that start with refs/bisect/, but might later include other unusual refs.

์˜์‚ฌ์ฐธ์กฐ(pseudoref)

A ref that has different semantics than normal refs. These refs can be read via normal Git commands, but cannot be written to by commands like git-update-ref[1].

The following pseudorefs are known to Git:

  • FETCH_HEAD is written by git-fetch[1] or git-pull[1]. It may refer to multiple object IDs. Each object ID is annotated with metadata indicating where it was fetched from and its fetch status.

  • MERGE_HEAD is written by git-merge[1] when resolving merge conflicts. It contains all commit IDs which are being merged.

ํ’€(pull)

Pulling a branch means to fetch it and merge it. See also git-pull[1].

ํ‘ธ์‹œ(push)

๋ถ„๊ธฐ๋ฅผ ํ‘ธ์‹œ(push)ํ•˜๋Š” ๊ฒƒ์€ ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ํ•ด๋‹น ๋ถ„๊ธฐ์˜ ํ—ค๋“œ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ฐ€์ ธ์™€ ์ด๋ฅผ ๋กœ์ปฌ ๋ถ„๊ธฐ์˜ ํ—ค๋“œ ๋ ˆํผ๋Ÿฐ์Šค์™€ ๋น„๊ตํ•˜์—ฌ ์กฐ์ƒ์ธ์ง€ ํ™•์ธํ•œ ํ›„, ์กฐ์ƒ์ผ ๊ฒฝ์šฐ ๋กœ์ปฌ ํ—ค๋“œ ๋ ˆํผ๋Ÿฐ์Šค๋กœ๋ถ€ํ„ฐ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์›๊ฒฉ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—†๋Š” ๊ฐ์ฒด๋“ค๋กœ ์ด๋™์‹œํ‚ค๊ณ , ์›๊ฒฉ ํ—ค๋“œ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์›๊ฒฉ ํ—ค๋“œ๊ฐ€ ๋กœ์ปฌ ํ—ค๋“œ์˜ ์กฐ์ƒ์ด ์•„๋‹Œ ๊ฒฝ์šฐ, ํ‘ธ์‹œ๋Š” ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๋„๋‹ฌ ๊ฐ€๋Šฅ(reachable)

All of the ancestors of a given commit are said to be "reachable" from that commit. More generally, one object is reachable from another if we can reach the one from the other by a chain that follows tags to whatever they tag, commits to their parents or trees, and trees to the trees or blobs that they contain.

๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ ๋น„ํŠธ๋งต(reachability bitmaps)

Reachability bitmaps store information about the reachability of a selected set of commits in a packfile, or a multi-pack index (MIDX), to speed up object search. The bitmaps are stored in a ".bitmap" file. A repository may have at most one bitmap file in use. The bitmap file may belong to either one pack, or the repository’s multi-pack index (if it exists).

๋ฆฌ๋ฒ ์ด์Šค(rebase)

ํ•œ ๋ถ„๊ธฐ์—์„œ ๋ฒ ์ด์Šค๋กœ ์ผ๋ จ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋‹ค์‹œ ์ ์šฉํ•˜๊ณ , ํ•ด๋‹น ๋ธŒ๋žœ์น˜์˜ ํ—ค๋“œ๋ฅผ ๊ฒฐ๊ณผ๋กœ ์žฌ์„ค์ •ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ์กฐ(ref)

A name that points to an object name or another ref (the latter is called a symbolic ref). For convenience, a ref can sometimes be abbreviated when used as an argument to a Git command; see gitrevisions[7] for details. Refs are stored in the repository.

The ref namespace is hierarchical. Ref names must either start with refs/ or be located in the root of the hierarchy. For the latter, their name must follow these rules:

  • The name consists of only upper-case characters or underscores.

  • The name ends with "_HEAD" or is equal to "HEAD".

    There are some irregular refs in the root of the hierarchy that do not match these rules. The following list is exhaustive and shall not be extended in the future:

  • AUTO_MERGE

  • BISECT_EXPECTED_REV

  • NOTES_MERGE_PARTIAL

  • NOTES_MERGE_REF

  • MERGE_AUTOSTASH

    Different subhierarchies are used for different purposes. For example, the refs/heads/ hierarchy is used to represent local branches whereas the refs/tags/ hierarchy is used to represent local tags..

์ฐธ์กฐ ๋กœ๊ทธ(reflog)

A reflog shows the local "history" of a ref. In other words, it can tell you what the 3rd last revision in this repository was, and what was the current state in this repository, yesterday 9:14pm. See git-reflog[1] for details.

๋ ˆํผ๋Ÿฐ์Šค ๊ทœ๋ฒ”(refspec)

A "refspec" is used by fetch and push to describe the mapping between remote ref and local ref. See git-fetch[1] or git-push[1] for details.

์›๊ฒฉ ์ €์žฅ์†Œ(remote repository)

๋™์ผํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์ง€๋งŒ ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ๋Š” ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ์›๊ฒฉ ์ €์žฅ์†Œ์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŽ˜์น˜(fetch) ๋˜๋Š” ํ‘ธ์‹œ(push)๋ฅผ ์ฐธ์กฐํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

์›๊ฒฉ ์ถ”์  ๋ถ„๊ธฐ(remote-tracking branch)

๋‹ค๋ฅธ ์ €์žฅ์†Œ์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ ˆํผ๋Ÿฐ์Šค์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ refs/remotes/foo/bar’์™€ ๊ฐ™์€ ํ˜•์‹์„ ๊ฐ€์ง€๋ฉฐ, ์ด๋Š” 'foo’๋ผ๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ์˜ 'bar ๋ถ„๊ธฐ๋ฅผ ์ถ”์ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋Š” ์„ค์ •๋œ fetch ๋ ˆํผ๋Ÿฐ์Šค ๊ทœ๋ฒ”์˜ ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์›๊ฒฉ ์ถ”์  ๋ถ„๊ธฐ์—๋Š” ์ง์ ‘์ ์ธ ์ˆ˜์ •์ด ํฌํ•จ๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ํ•ด๋‹น ๋ถ„๊ธฐ์— ๋กœ์ปฌ ์ปค๋ฐ‹์ด ์ ์šฉ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์ €์žฅ์†Œ(repository)

๋ ˆํผ๋Ÿฐ์Šค์˜ ๋ชจ์Œ๊ณผ ๋ ˆํผ๋Ÿฐ์Šค๋“ค๋กœ๋ถ€ํ„ฐ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๊ตฌ์„ฑ๋œ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์ž๊ธฐ(porcelains)๋กœ๋ถ€ํ„ฐ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์žฅ์†Œ๋Š” ๋Œ€์ฒด ๋งค์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ๋‹ค๋ฅธ ์ €์žฅ์†Œ์™€ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

resolve

์ž๋™ ๋ณ‘ํ•ฉ ์ž‘์—…์ด ์‹คํŒจํ•œ ํ›„ ์ˆ˜๋™์œผ๋กœ ์ˆ˜์ •ํ•˜๋Š” ๋™์ž‘์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ž๋™ ๋ณ‘ํ•ฉ์ด ๋‚จ๊ธด ์˜ค๋ฅ˜๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ๋น„์ „(revision)

์ปค๋ฐ‹(๋ช…์‚ฌ)๊ณผ ๋™์˜์–ด.

rewind

๊ฐœ๋ฐœ ์‚ฌํ•ญ์˜ ์ผ๋ถ€๋ฅผ ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ˜„์žฌ์˜ ํ—ค๋“œ๋ฅผ ์ด์ „์˜ ๋ฆฌ๋น„์ „์— ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

SCM

์†Œ์Šค ์ฝ”๋“œ ๊ด€๋ฆฌ(๋„๊ตฌ).

SHA-1

๏ปฟโ€œ๋ณด์•ˆ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1โ€; ์•”ํ˜ธํ™” ํ•ด์‹œ ํ•จ์ˆ˜. Git์˜ ๋งฅ๋ฝ์—์„œ ๊ฐ์ฒด๋ช…์˜ ๋™์˜์–ด๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์–•์€ ๋ณต์‚ฌ

๋Œ€๋ถ€๋ถ„ ์–•์€ ์ €์žฅ์†Œ์™€ ๋™์˜์–ด์ง€๋งŒ, ์ด ๋ฌธ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด git clone --depth=…​ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์ƒ์„ฑ๋˜์—ˆ์Œ์„ ๋” ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–•์€ ์ €์žฅ์†Œ

์–•์€ ์ €์žฅ์†Œ์—๋Š” ๋ช‡๋ช‡ ์ปค๋ฐ‹์˜ ์‚ญ์ œ๋œ ๋ถˆ์™„์ „ํ•œ ๊ธฐ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค. (์ฆ‰, Git์€ ์ปค๋ฐ‹๋“ค์ด ์ปค๋ฐ‹ ๊ฐ์ฒด์— ๊ธฐ๋ก๋˜์—ˆ๋”๋ผ๋„ ๋ถ€๋ชจ๋“ค์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ€์žฅํ•˜๋ผ๊ณ  ์ง€์‹œ ๋ฐ›์Šต๋‹ˆ๋‹ค.) ์ด๊ฒƒ์€ ๋•Œ๋•Œ๋กœ ์—…์ŠคํŠธ๋ฆผ์— ๊ธฐ๋ก๋œ ์‹ค์ œ ๊ธฐ๋ก์ด ํ›จ์”ฌ ๋” ํฌ๋”๋ผ๋„ ํ”„๋กœ์ ํŠธ์˜ ์ตœ์‹  ๊ธฐ๋ก์—๋งŒ ๊ด€์‹ฌ์ด ์žˆ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•์€ ์ €์žฅ์†Œ๋Š” git-clone[1]์˜ --depth ์˜ต์…˜์„ ์ œ๊ณตํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋˜๊ณ  ๊ธฐ๋ก์€ ์ดํ›„์— git-fetch[1]์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ฌํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆจ๊น€ ํ•ญ๋ชฉ

object๋Š” ๋”ํ‹ฐ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋‚ด์šฉ๊ณผ ํ–ฅํ›„ ์žฌ์‚ฌ์šฉ์„ ์œ„ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์„œ๋ธŒ ๋ชจ๋“ˆ

๋‹ค๋ฅธ ์ €์žฅ์†Œ ๋‚ด์˜ ๋ณ„๋„์˜ ํ”„๋กœ์ ํŠธ ๊ธฐ๋ก์„ ๋ณด๊ด€ํ•˜๋Š” ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. (ํ›„์ž๋Š” ์Šˆํผํ”„๋กœ์ ํŠธ๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.)

์Šˆํผํ”„๋กœ์ ํŠธ

์ž‘์—… ํŠธ๋ฆฌ์— ์žˆ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ ์ €์žฅ์†Œ๋“ค์„ ์„œ๋ธŒ ๋ชจ๋“ˆ๋กœ ์ฐธ์กฐํ•˜๋Š” ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ์Šˆํผ ํ”„๋กœ์ ํŠธ๋Š” ํฌํ•จ๋œ ์„œ๋ธŒ ๋ชจ๋“ˆ๋“ค์˜ ์ปค๋ฐ‹ ๊ฐ์ฒด๋“ค์˜ ์ด๋ฆ„(์‚ฌ๋ณธ์€ ๋ณด๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐํ˜ธ ์ฐธ์กฐ

๊ธฐํ˜ธ ์ฐธ์กฐ: SHA-1 ID ์ž์ฒด๋ฅผ ํฌํ•จํ•˜๋Š” ๋Œ€์‹ ’ref: refs/some/thing' ํ˜•์‹์œผ๋กœ ํฌํ•จํ•˜๊ณ  ์ฐธ์กฐ๋  ๋•Œ, ์žฌ๊ท€์ ์œผ๋กœ ์—ญ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. '<<def_HEAD,HEAD'๋Š” ๊ธฐํ˜ธ ์ฐธ์กฐ์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ž…๋‹ˆ๋‹ค. ๊ธฐํ˜ธ์ฐธ์กฐ๋Š” git-symbolic-ref[1] ๋ช…๋ น์œผ๋กœ ์กฐ์ž‘๋˜์–ด ์ง‘๋‹ˆ๋‹ค.

ํƒœ๊ทธ

์ž„์˜์˜ ์œ ํ˜•์˜ ๊ฐ์ฒด(์ผ๋ฐ˜์ ์œผ๋กœ ํƒœ๊ทธ๋Š” ํƒœ๊ทธ ๋˜๋Š” ์ปค๋ฐ‹ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.)๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค refs/tags/ ์•„๋ž˜์˜ ' ์ฐธ์กฐ์ž…๋‹ˆ๋‹ค. ํ—ค๋“œ์™€๋Š” ๋Œ€์กฐ์ ์œผ๋กœ ํƒœ๊ทธ๋Š” commit ๋ช…๋ น์–ด๋กœ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Git ํƒœ๊ทธ๋Š” Lisp ํƒœ๊ทธ(Git์—์„œ๋Š” ๊ฐ์ฒด ํƒ€์ž…์œผ๋กœ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค)์™€ ์•„๋ฌด ๊ด€๋ จ ์—†์Šต๋‹ˆ๋‹ค. ํƒœ๊ทธ๋Š” ์ปค๋ฐ‹ ์กฐ์ƒ ์ฒด์ธ์˜ ํŠน์ • ์ง€์ ์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํƒœ๊ทธ ๊ฐ์ฒด

์ปค๋ฐ‹ ๊ฐ์ฒด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ PGP ์„œ๋ช…์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ "์„œ๋ช…๋œ ํƒœ๊ทธ ๊ฐ์ฒด"๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์ œ ๋ถ„๊ธฐ

๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐœ๋…์ ์ธ ๊ฐœ๋ฐœ ๋ผ์ธ์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ Git ๋ธŒ๋žœ์น˜. ๋ธŒ๋žœ์น˜๋Š” ๋งค์šฐ ์‰ฝ๊ณ  ๋น„์šฉ์ด ์ €๋ ดํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ๊ฐ ๋งค์šฐ ์ž˜ ์ •์˜๋œ ๊ฐœ๋…์ด๋‚˜ ์ ์ง„์ ์ด์ง€๋งŒ ๊ด€๋ จ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํฌํ•จํ•˜๋Š” ์—ฌ๋Ÿฌ ์ž‘์€ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ์ข…์ข… ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค.

ํŠธ๋ฆฌ

ํ•˜๋‚˜์˜ ์ž‘์—… ํŠธ๋ฆฌ ๋˜๋Š” ์ข…์†๋œ ๋ธ”๋กญ ๋ฐ ํŠธ๋ฆฌ ๊ฐ์ฒด์™€ ํ•จ๊ป˜ํ•˜๋Š” ํŠธ๋ฆฌ ๊ฐ์ฒด (์ฆ‰, ์ž‘์—… ํŠธ๋ฆฌ์˜ ์ €์žฅ๋œ ํ‘œํ˜„).

ํŠธ๋ฆฌ ๊ฐ์ฒด

ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๋ชจ๋“œ์˜ ๋ชฉ๋ก๊ณผ ํ•จ๊ป˜ ๊ด€๋ จ๋œ ๋ธ”๋กญ ๋ฐ/๋˜๋Š” ํŠธ๋ฆฌ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒด. ํŠธ๋ฆฌ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์œ ์‚ฌ ํŠธ๋ฆฌ

A tree object or an object that can be recursively dereferenced to a tree object. Dereferencing a commit object yields the tree object corresponding to the revision's top directory. The following are all tree-ishes: a commit-ish, a tree object, a tag object that points to a tree object, a tag object that points to a tag object that points to a tree object, etc.

unborn

HEAD๋Š” ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ปค๋ฐ‹์ด ์—†๋Š” ๋ถ„๊ธฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Ÿฌํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ๋ฏธํƒ„์ƒ ๋ถ„๊ธฐ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ฏธํƒ„์ƒ ๋ถ„๊ธฐ๋ฅผ ์ ‘ํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์€ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ณต์ œํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ HEAD๋Š” ์•„์ง ์ƒ์„ฑ๋˜์ง€ ์•Š์€ main (๋˜๋Š” ์„ค์ •์— ๋”ฐ๋ผ master) ๋ถ„๊ธฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ถ€ ์ž‘์—…์€ ๊ณ ์•„ ์˜ต์…˜์œผ๋กœ ๋ฏธํƒ„์ƒ ๋ถ„๊ธฐ์— ์ ‘์–ด๋“ค๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์€ ์ธ๋ฑ์Šค

๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์€ ์ธ๋ฑ์Šค ํ•ญ๋ชฉ์„ ํฌํ•จํ•˜๋Š” ์ธ๋ฑ์Šค.

์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด

๋ธŒ๋žœ์น˜, ํƒœ๊ทธ, ๋˜๋Š” ๊ธฐํƒ€ ์ฐธ์กฐ์—์„œ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์€ ๊ฐ์ฒด ์ž…๋‹ˆ๋‹ค.

์—…์ŠคํŠธ๋ฆผ ๋ธŒ๋žœ์น˜

ํ•ด๋‹น ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ๋œ ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜(๋˜๋Š” ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋Š” ๋ฆฌ๋ฒ ์ด์Šค๋œ๋‹ค.) ์ž…๋‹ˆ๋‹ค. ์ด๋Š” branch.<name>.remote ๊ทธ๋ฆฌ๊ณ  branch.<name>.merge๋ฅผ ํ†ตํ•ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ 'A’์˜ ์—…์ŠคํŠธ๋ฆผ ๋ธŒ๋žœ์น˜๊ฐ€ 'origin/B’์ธ ๊ฒฝ์šฐ ๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ๋Š” "'A’๊ฐ€ 'origin/b’๋ฅผ ์ถ”์ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ์ค‘์ธ ํŠธ๋ฆฌ

์‹ค์ œ ์šฐ๋ฆฌ์˜ ๋ˆˆ์— ๋ณด์ด๋Š” ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ž‘์—… ํŠธ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ—ค๋“œ ์ปค๋ฐ‹ ํŠธ๋ฆฌ์˜ ๋‚ด์šฉ๊ณผ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“ค๊ณ  ์•„์ง ์ปค๋ฐ‹ํ•˜์ง€ ์•Š์€ ๋กœ์ปฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ํŠธ๋ฆฌ

์ €์žฅ์†Œ๋Š” 0๊ฐœ ๋˜๋Š” ํ•œ๊ฐœ ๋˜๋Š” ๋” ๋งŽ์€ ์ž‘์—… ํŠธ๋ฆฌ๋“ค์ด ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ "์ž‘์—… ํŠธ๋ฆฌ"๋Š” "์ž‘์—… ์ค‘์ด ํŠธ๋ฆฌ"์™€ ์ €์žฅ์†Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋‹จ์ผ ์ €์žฅ์†Œ์˜ ๋‹ค๋ฅธ ์ž‘์—… ํŠธ๋ฆฌ๋“ค ๊ฐ„์— ๊ณต์œ ๋˜๊ณ  ์ž‘์—… ํŠธ๋ฆฌ๋ณ„๋กœ ๋ณ„๋„๋กœ ์œ ์ง€ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.(์˜ˆ: ์ธ๋ฑ์Šค, HEAD ๊ทธ๋ฆฌ๊ณ  MERGE_HEAD์™€ ๊ฐ™์€ ์˜์‚ฌ ์ฐธ์กฐ๋“ค, ๊ฐ ์ž‘์—… ํŠธ๋ฆฌ ์ฐธ์กฐ ๋ฐ ๊ฐ ์ž‘์—… ํŠธ๋ฆฌ์˜ ๊ตฌ์„ฑ ํŒŒ์ผ.)

GIT

git[1] ๋ชจ์Œ์˜ ์ผ๋ถ€

scroll-to-top