2.41๊ฐ์ ๊ฐ์ ๊ฐ๋ฐ ๋์ ๋ถ์ฐ ์์ค ์ ์ด ์์คํ Git XNUMX์ ๋ฆด๋ฆฌ์ค๊ฐ ๊ณต๊ฐ๋์์ต๋๋ค. Git์ ๋ถ๊ธฐ ๋ฐ ๋ณํฉ ๋ถ๊ธฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ฐํ ๋น์ ํ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๊ณ ์ ๋ขฐํ ์ ์๋ ๊ณ ์ฑ๋ฅ ๋ฒ์ ์ ์ด ์์คํ ์ค ํ๋์ ๋๋ค. ๊ธฐ๋ก์ ๋ฌด๊ฒฐ์ฑ๊ณผ ์๊ธ ๋ณ๊ฒฝ์ ๋ํ ์ ํญ์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ฐ ์ปค๋ฐ์์ ์ ์ฒด ์ด์ ๊ธฐ๋ก์ ์์์ ํด์ฑ์ด ์ฌ์ฉ๋๋ฉฐ ๊ฐ๋ฐ์์ ๋์งํธ ์๋ช ์ผ๋ก ๊ฐ๋ณ ํ๊ทธ ๋ฐ ์ปค๋ฐ์ ํ์ธํ ์๋ ์์ต๋๋ค.
์ด์ ๋ฆด๋ฆฌ์ค์ ๋น๊ตํ์ฌ 542๋ช ์ ๊ฐ๋ฐ์๊ฐ ์ฐธ์ฌํ์ฌ ์ค๋นํ ์ ๋ฒ์ ์๋ 95๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋์์ผ๋ฉฐ ์ด ์ค 29๋ช ์ด ์ฒ์์ผ๋ก ๊ฐ๋ฐ์ ์ฐธ์ฌํ์ต๋๋ค. ์ฃผ์ ํ์ :
- ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ฐธ์กฐ๋์ง ์๋ ๋๋ฌํ ์ ์๋ ๊ฐ์ฒด์ ์ฒ๋ฆฌ๊ฐ ๊ฐ์ ๋์์ต๋๋ค(๋ถ๊ธฐ ๋๋ ํ๊ทธ๋ ์ฐธ์กฐ๋์ง ์์). ๋๋ฌํ ์ ์๋ ๊ฐ์ฒด๋ ๊ฐ๋น์ง ์์ง๊ธฐ์ ์ํด ์ ๊ฑฐ๋์ง๋ง ๊ฒฝํฉ ์ํ๋ฅผ ํผํ๊ธฐ ์ํด ์ ๊ฑฐํ๊ธฐ ์ ์ ํน์ ์๊ฐ ๋์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋จ์ ์์ต๋๋ค. ๋๋ฌํ ์ ์๋ ๊ฐ์ฒด์ ๊ธฐ๊ฐ์ ์ถ์ ํ๋ ค๋ฉด ์ ์ฌํ ๊ฐ์ฒด์ ๋ณ๊ฒฝ ์๊ฐ์ผ๋ก ๋ ์ด๋ธ์ ๋ฐ์ธ๋ฉํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ณตํต ๋ณ๊ฒฝ ์๊ฐ์ ๊ฐ๋ ํ๋์ ํฉ ํ์ผ์ ์ ์ฅํ ์ ์์ต๋๋ค. ์ด์ ์๋ ๋๋ฌํ ์ ์๋ ๊ฐ ๊ฐ์ฒด๊ฐ ๋ณ๋์ ํ์ผ์ ์ ์ฅ๋์ด ์์ง ์ญ์ ๋์ง ์์ ์๋ก์ด ๋๋ฌํ ์ ์๋ ๊ฐ์ฒด๊ฐ ๋ง์ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ ๋ฆด๋ฆฌ์ค์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก "cruft packs" ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์ ๊ทผํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ์์ถํ์ฌ ์ ๊ทผํ ์ ์๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ํ๋์ ํฉ ํ์ผ์ ์ ์ฅํ๊ณ ๊ฐ ๊ฐ์ฒด์ ์์ ์๊ฐ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ํ์ฅ์๊ฐ ".mtimes"์ธ ํ์ผ๊ณผ ".idx" ํ์ฅ์๊ฐ ์๋ ์์ธ ํ์ผ์ ์ฌ์ฉํ์ฌ ๋งํฌ๋ฉ๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ํฉ ํ์ผ์ ๋ํ ๋์คํฌ์ ์ญ๋ฐฉํฅ ์ธ๋ฑ์ค(revindex) ์ ์ง๊ฐ ํ์ฑํ๋ฉ๋๋ค. torvalds/linux ๋ฆฌํฌ์งํ ๋ฆฌ์์ ํ
์คํธํ์ ๋ ์ญ๋ฐฉํฅ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฆฌ์์ค ์ง์ฝ์ ์ธ "git push" ์์
์ ์๋๋ฅผ 1.49๋ฐฐ ๋์ผ ์ ์์๊ณ "git cat- file --batch='%(objectsize:disk)' ยป 77๋ฒ. ์ญ๋ฐฉํฅ ์์ธ์ด ์๋ ํ์ผ(".rev")์ ".git/objects/pack" ๋๋ ํ ๋ฆฌ์ ์ ์ฅ์ ๋ด๋ถ์ ์ ์ฅ๋ฉ๋๋ค.
Git์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ํ์ผ์ ๋ฐฐ์น๋๋ ๊ฐ์ฒด ํํ๋ก ์ ์ฅํ๋ค๋ ์ ์ ์๊ธฐํ์ญ์์ค. ๋ฆฌํฌ์งํ ๋ฆฌ ์์ ์ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด ๊ฐ์ฒด๋ ํฉ ํ์ผ์ ์ถ๊ฐ๋ก ๋ฐฐ์น๋๋ฉฐ ์ ๋ณด๋ ๊ฐ์ฒด ์คํธ๋ฆผ์ ํํ๋ก ์ฐจ๋ก๋ก ํ์๋ฉ๋๋ค(git fetch ๋ฐ git์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์ ์กํ ๋ ์ ์ฌํ ํ์์ด ์ฌ์ฉ๋จ). ํธ์ ๋ช ๋ น). ๊ฐ ํฉ ํ์ผ์ ๋ํด ์ธ๋ฑ์ค ํ์ผ(.idx)์ด ์์ฑ๋๋ฏ๋ก ์ง์ ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ฒด ์๋ณ์๋ก ์ ์ฅ๋๋ ํฉ ํ์ผ์ ์คํ์ ์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
์ ๋ฆด๋ฆฌ์ค์ ํฌํจ๋ ์ญ๋ฐฉํฅ ์ธ๋ฑ์ค๋ ํฉ ํ์ผ์์ ๊ฐ์ฒด์ ์์น์ ๋ํ ์ ๋ณด์์ ๊ฐ์ฒด ID๋ฅผ ๊ฒฐ์ ํ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๋ ๋ฐ ๋ชฉ์ ์ด ์์ต๋๋ค. ์ด์ ์๋ ์ด๋ฌํ ๋ณํ์ด ํฉ ํ์ผ์ ํ์ฑํ๋ ๋์ ์ฆ์์์ ์ํ๋์ด ๋ฉ๋ชจ๋ฆฌ์๋ง ์ ์ฅ๋์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์๊ณ ๋งค๋ฒ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ ๋ก ์์ฑํด์ผ ํ์ต๋๋ค. ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ถํ๋ ์์ ์ ๊ฐ์ฒด-์์น ์์ ๋ฐฐ์ด์ ๊ตฌ์ถํ๊ณ ์์น๋ณ๋ก ์ ๋ ฌํ๋ ์์ ์ผ๋ก ์ถ์๋๋ฉฐ, ๋์ฉ๋ ํฉ ํ์ผ์ ๊ฒฝ์ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ง์ ์์ธ์ ์ฌ์ฉํ๋ ๊ฐ์ฒด์ ๋ด์ฉ์ ํ์ํ๋ ์์ ์ ์์น-๊ฐ์ฒด ๊ด๊ณ ๋ฐ์ดํฐ๊ฐ ์์ธ๋์ง ์์ ๊ฐ์ฒด์ ํฌ๊ธฐ๋ฅผ ํ์ํ๋ ์์ ๋ณด๋ค 62๋ฐฐ ๋ ๋น ๋ฆ ๋๋ค. ์ญ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ํ ์ด๋ฌํ ์์ ์ ๊ฑฐ์ ๊ฐ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ์์ํ์ต๋๋ค. ์ญ๋ฐฉํฅ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ ๋ง๋ค์ด์ง ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์์ ์ง์ ์ ์กํ์ฌ ๊ฐ์ ธ์ค๊ธฐ ๋ฐ ํธ์ ๋ช ๋ น์ ์คํํ ๋ ๊ฐ์ฒด ์ ์ก ์์ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
- ์ ํ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ก์ธ์คํ ๋ ์๊ฒฉ ์ฆ๋ช ์ ์ ๋ฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ "์๊ฒฉ ์ฆ๋ช ๋์ฐ๋ฏธ" ํ๋กํ ์ฝ์ ๋ํ ์๊ฒฉ ์ฆ๋ช ์ฒ๋ฆฌ๊ธฐ์ ์ธ์ฆ ์๋น์ค ๊ฐ์ WWW-Authenticate ํค๋ ์ ๋ฌ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. WWW-Authenticate ํค๋ ์ง์์ ํตํด OAuth ๋ฒ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๋ณด๋ค ์ธ๋ถํ๋ ์ฌ์ฉ์ ์ก์ธ์ค๋ก ์ ๋ฌํ๊ณ ์์ฒญ์ ์ฌ์ฉํ ์ ์๋ ๋ฒ์๋ฅผ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
- ํ์ ์ต์ "%(ahead-behind: )"๋ฅผ ํตํด ๋ค๋ฅธ ๋ถ๊ธฐ์ ๋น๊ตํ์ฌ ํน์ ๋ถ๊ธฐ์ ์กด์ฌํ๊ฑฐ๋ ์๋ ์ปค๋ฐ ์์ ๋ํ ์ ๋ณด๋ฅผ ์ฆ์ ์ป์ ์ ์์ต๋๋ค(์ปค๋ฐ ์์ค์์ ํ ๋ถ๊ธฐ๊ฐ ๋ค๋ฅธ ๋ถ๊ธฐ๋ณด๋ค ๋ค์ฒ์ง๊ฑฐ๋ ์์๋ ์ ๋). ์ด์ ์๋ ์ด ์ ๋ณด๋ฅผ ์ป์ผ๋ ค๋ฉด ๋ถ๊ธฐ์ ๊ณ ์ ํ ์ปค๋ฐ ์๋ฅผ ๊ฐ์ ธ์ค๋ "git rev-list --count main..my-feature" ๋ช ๋ น๊ณผ "git rev-list --count my-feature.." ๋ช ๋ น์ด ํ์ํ์ต๋๋ค. main"์ ์ฌ์ฉํ์ฌ ๋๋ฝ๋ ์ปค๋ฐ ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์ด์ ์ด๋ฌํ ๊ณ์ฐ์ ๋จ์ผ ๋ช ๋ น์ผ๋ก ์ค์ผ ์ ์์ผ๋ฏ๋ก ํธ๋ค๋ฌ ์ฐ๊ธฐ๊ฐ ๊ฐ์ํ๋๊ณ ์คํ ์๊ฐ์ด ๋จ์ถ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ณํฉ๋์ง ์์ ๋ถ๊ธฐ๋ฅผ ํ์ํ๊ณ ๊ธฐ๋ณธ ๋ถ๊ธฐ๋ณด๋ค ๋ค์ ์๋์ง ์์ ์๋์ง ํ๊ฐํ๋ ค๋ฉด ํ ์ค์ง๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. $ git for-each-ref --no-merged=origin/HEAD \ --format=' %(refname:short) %(ahead-behind:origin/HEAD)' \ refs/heads/tb/ | column -t tb/cruft-extra-tips 2 96 tb/for-each-refโexclude 16 96 tb/roaring-bitmaps 47 3 ์ด์ ์ ์ฌ์ฉ๋ ์คํฌ๋ฆฝํธ ๋์ 17๋ฐฐ ๋ ๋๋ฆผ: $ git for-each-ref โ format='%(refname:short)' --no-merged=origin/HEAD \ refs/heads/tb | while read ref do ahead="$(git rev-list --count origin/HEAD..$ref)" behind="$(git rev-list --count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$ahead" "$behind" ์๋ฃ โโ| column -t tb/cruft-extra-tips 2 96 tb/for-each-refโexclude 16 96 tb/roaring-bitmaps 47 3
- "git fetch" ๋ช ๋ น์ "--porcelain" ์ต์ ์ด ์ถ๊ฐ๋์ด " โ, ๋ ์ฝ๊ธฐ ์ฝ์ง๋ง ์คํฌ๋ฆฝํธ์์ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๋ฐ ๋ ํธ๋ฆฌํฉ๋๋ค.
- "fetch.hideRefs" ์ค์ ์ ์ถ๊ฐํ์ฌ ์๋ฒ๊ฐ ๊ฐ์ฒด์ ์ ์ฒด ์ธํธ๋ฅผ ๋ณด๋๋์ง ํ์ธํ๋ ๋จ๊ณ์์ ๋ก์ปฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋งํฌ ์ผ๋ถ๋ฅผ ์จ๊น์ผ๋ก์จ "git ๊ฐ์ ธ์ค๊ธฐ" ์์ ์๋๋ฅผ ๋์ด๊ณ ํ์ธ์ ์๋ฒ๋ก๋ง ์ ํํ์ฌ ์๊ฐ์ ์ ์ฝํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ง์ ๊ฒ์๋๋ ๊ณณ. ์๋ฅผ ๋ค์ด ์ถ์ ๋ ์ธ๋ถ ๋งํฌ๊ฐ ๋ง์ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์๋ ์์คํ ์์ ํ ์คํธํ ๋ $remote ๋์ ์๋ฒ๋ก ์ฃผ์ ์ง์ ๋ ๋งํฌ๋ฅผ ์ ์ธํ ๋ชจ๋ ๋งํฌ๋ฅผ ์ ์ธํ๋ฉด "git ๊ฐ์ ธ์ค๊ธฐ" ์์ ์ด 20๋ถ์์ 30์ด๋ก ๋จ์ถ๋์์ต๋๋ค. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ ๊ฐ์ ธ์ค๊ธฐ $remote
- "git fsck" ๋ช ๋ น์ ์ ๊ทผ์ฑ ๋นํธ๋งต ๋ฐ ์ญ๋ฐฉํฅ ์ธ๋ฑ์ค์์ ์์, ์ฒดํฌ์ฌ ์ผ์น ๋ฐ ๊ฐ์ ์ ํ์ฑ์ ํ์ธํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค.
- "git clone --local" ๋ช ๋ น์ ์ด์ $GIT_DIR ๋ด๋ถ์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ ํฌํจ๋ ์ ์ฅ์์์ ๋ณต์ฌํ๋ ค๊ณ ํ ๋ ์ค๋ฅ๋ฅผ ํ์ํฉ๋๋ค.
์ถ์ฒ : opennet.ru