[Git] git ์›๋ฆฌ

go_go_ยท2022๋…„ 10์›” 31์ผ
0

Git

๋ชฉ๋ก ๋ณด๊ธฐ
9/12

๐Ÿ“Œ .git ํŒŒ์ผ

git์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด git init ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ํŒŒ์ผ์€ git์ด ๊ด€๋ฆฌํ•˜๋Š” ํŒŒ์ผ์ด ๋œ๋‹ค. ์ฆ‰, .git ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.

git์—์„œ ๊ฐ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ๋•Œ ์Šค๋ƒ…์Š›์„ ์ฐ์–ด ํ•˜๋‚˜์˜ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

์ฐธ๊ณ ๋กœ ๋”์ด์ƒ git์œผ๋กœ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์ง€ ์•Š์œผ๋ฉด rm -r .git ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด .git ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋œ๋‹ค.



๐Ÿ‘‰ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ

์ž‘์—…๊ณต๊ฐ„ ๋ฐ Git ๊ณต๊ฐ„

๊ณต๊ฐ„์œ„์น˜์„ค๋ช…
working Directory๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๋Š” ๊ณต๊ฐ„์‹ค์ œ ์ž‘์—…์„ ํ•˜๋Š” ๊ณต๊ฐ„
Stating Area (=Index).git/index์ปค๋ฐ‹ํ•  ํŒŒ์ผ ๋ชจ์•„๋‘ (=addํ•œ ํŒŒ์ผ)
(Local) Repository.git/objectsgit์ด ๋ฒ„์ „๊ด€๋ฆฌํ•˜๋ฉด์„œ ๋ชจ์•„๋‘” ํŒŒ์ผ

์—ฌ๊ธฐ์„œ Repository์— ๋ณด๊ด€๋œ ํŒŒ์ผ์ด ๋ชจ๋‘ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์ด๋‹ค. ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ํŒŒ์ผ์„ค๋ช…
Blob ํŒŒ์ผBinary large Object, ํŒŒ์ผ์˜ ์Šค๋ƒ…์ƒท
commit ํŒŒ์ผํ•˜๋‚˜์˜ ๋ฒ„์ „ ์ƒ์„ฑ
tree ํŒŒ์ผํŒŒ์ผ ๋ช…๊ณผ ํŒŒ์ผ์˜ blob ํŒŒ์ผ์˜ ์ฃผ์†Œ ๋ชฉ๋ก
tag ํŒŒ์ผํŠน์ • ์ปค๋ฐ‹ ํƒœ๊ทธ


๐Ÿ‘‰ add, commit ์›๋ฆฌ

add

1. ํŒŒ์ผ ์ €์žฅ - blob ํŒŒ์ผ
ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  git์„ ํ†ตํ•ด add ํ•˜๋ฉด ํŒŒ์ผ์— ๋Œ€ํ•œ blob ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. blob ํŒŒ์ผ์˜ ์ด๋ฆ„์€ ํŒŒ์ผ์˜ ๋‚ด์šฉ๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค. git์—์„œ ํ•ด์‹ฑ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ๋ช…์„ ๊ฒฐ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ๋‚ด์šฉ์˜ ํŒŒ์ผ์ด๋ฉด ํŒŒ์ผ๋ช…๋„ ๋™์ผํ•˜๋‹ค. ์ด๋Ÿฐ blob ํŒŒ์ผ์€ object์— ์กด์žฌํ•œ๋‹ค.

2. addํ•œ ํŒŒ์ผ ๋ชจ์Œ
addํ•œ blobํŒŒ์ผ์€ ๋ชจ๋‘ index์— ๋ณด๊ด€๋œ๋‹ค. ๋‚˜์ค‘์— commitํ•  ๋•Œ index์— ์žˆ๋Š” ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์ง„ํ–‰ํ•œ๋‹ค.

commit

commit
git commit์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ๋ฒ„์ „์„ ๋งŒ๋“ ๋‹ค. ์ด ๋•Œ commit ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. commit ํŒŒ์ผ์—๋Š” ์—ฌ๋Ÿฌ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ๋‹ค.

  • parent : ์ด์ „ ์ปค๋ฐ‹ ํŒŒ์ผ ๊ฐ€๋ฅดํ‚จ๋‹ค.
  • tree : blob ํŒŒ์ผ ๋ชจ์•„๋‘์—ˆ๋‹ค.
  • author : ์ž‘์„ฑํ•œ ์ž
  • commiter : ์ปค๋ฐ‹ํ•œ ์ž
  • message : ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.

commit ํŒŒ์ผ
์ˆ˜์ •์ด ๋œ ํŒŒ์ผ์€ add๋ฅผ ํ†ตํ•ด index์— ๋ชจ๋‘ ๋ชจ์˜€๋‹ค. ์ด index์— ๋ชจ์ธ ํŒŒ์ผ์„ ํ•˜๋‚˜์˜ treeํŒŒ์ผ๋กœ ๋งŒ๋“ ๋‹ค.(์•„๋ž˜ ๊ทธ๋ฆผ์— ๋นจ๊ฐ„์ƒ‰) ์ด tree ํŒŒ์ผ๊ณผ ์ˆ˜์ •์ด ๋˜์ง€ ์•Š์€ ํŒŒ์ผ(=blob ํŒŒ์ผ)์„ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ๋‹ค์‹œ treeํŒŒ์ผ๋กœ ๋งŒ๋“ ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์€ ์˜ˆ์‹œ์ด๋‹ค.


๐Ÿ‘‰ branch ์›๋ฆฌ

HEAD ์•Œ์•„๋ณด๊ธฐ
log๋ฅผ ๋ณด๋ฉด HEAD๊ฐ€ ์–ด๋–ค ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š”์ง€ ๋‚˜์™€์žˆ๋‹ค. ์ด HEAD๋ฅผ ์•Œ์•„๋ณด์ž.

.git ํŒŒ์ผ์„ ๋“ค์–ด๊ฐ€๋ณด์ž.
cd .git/refs/heads/์„ ๋“ค์–ด๊ฐ€๋ณด์ž. ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ main์ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด main์˜ ๊ฐ’์€ ์ตœ์‹  ์ปค๋ฐ‹ ์˜ค๋ธŒ์ ํŠธ ID๊ฐ’์„ ๊ฐ€๋ฅดํ‚จ๋‹ค.

  • .git/refs/heads ๋“ค์–ด๊ฐ€๊ธฐ

git log์—์„œ HEAD๋Š” refs/heads/mainํŒŒ์ผ์ด ๊ฐ€๋ฅดํ‚จ ์ตœ์‹  ์ปค๋ฐ‹ ๊ฐ’์ด๋‹ค. ์ด ์ปค๋ฐ‹ ํŒŒ์ผ ์•ˆ์˜ parent๋ฅผ ํ†ตํ•ด ์ด์ „ ์ปค๋ฐ‹ ๋ชฉ๋ก์„ ๋ฟŒ๋ฆฌ๋ฉด์„œ ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ๋กœ๊ทธ ๋ชจ์Šต์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๋‹ค.

  • main์˜ ๋‚ด์šฉ๊ณผ log์—์„œ HEAD๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” ์ปค๋ฐ‹

branch ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ
branch๋Š” refs/heads ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ์žˆ๋Š” ํŒŒ์ผ์„ ์˜๋ฏธํ•œ๋‹ค. branch๋ฅผ ์ƒ์„ฑํ•˜๋ฉด refs ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ์ด ์ถ”๊ฐ€๋œ๋‹ค.

์˜ˆ์‹œ๋กœ branch1์ด๋ผ๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด refs ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์—๋Š” ๋‘ ๊ฐ€์ง€ ํŒŒ์ผ์ด ์ƒ๊ธด๋‹ค.

  • .git/refs/heads ์•ˆ ํŒŒ์ผ์ด ๋Š˜์–ด๋‚œ ๋ชจ์Šต

branch1๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ๋ฐ”๊พธ๊ณ  ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค. ์ด๋•Œ HEAD๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” ํŒŒ์ผ์€ .git/refs/heads/branch1์ด๋‹ค.

  • refs/heads/branch์˜ ํŒŒ์ผ ๋‚ด์šฉ๊ณผ log์˜ HEAD

์ถœ์ฒ˜
์ด๋ฏธ์ง€
http://osteele.com

์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ
https://koreapy.tistory.com/m/1402
https://it-eldorado.tistory.com/4
https://kotlinworld.com/301

profile
๊ฐœ๋ฐœ๋„ ํ•˜๊ณ  ์‹ถ์€ ํด๋ผ์šฐ๋“œ ์—”์ง€๋‹ˆ์–ด

0๊ฐœ์˜ ๋Œ“๊ธ€