๋ถ์ฐ ์์ค ์ ์ด ์์คํ Git 2.37์ด ์ถ์๋์์ต๋๋ค. Git์ ๊ฐ์ฅ ์ธ๊ธฐ ์๊ณ ์์ ์ ์ธ ๊ณ ์ฑ๋ฅ ๋ฒ์ ์ ์ด ์์คํ ์ค ํ๋๋ก ๋ถ๊ธฐ ๋ฐ ๋ณํฉ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ ์ฐํ ๋น์ ํ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ธฐ๋ก์ ๋ฌด๊ฒฐ์ฑ๊ณผ ์๊ธ ๋ณ๊ฒฝ์ ๋ํ ์ ํญ์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ฐ ์ปค๋ฐ์์ ์ ์ฒด ์ด์ ๊ธฐ๋ก์ ์์์ ํด์ฑ์ด ์ฌ์ฉ๋๋ฉฐ, ๊ฐ๋ฐ์์ ๋์งํธ ์๋ช ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ ํ๊ทธ์ ์ปค๋ฐ์ ์ธ์ฆํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
์ด์ ๋ฒ์ ๊ณผ ๋น๊ตํ์ฌ 395๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ๋ฒ์ ์ ์ฑํ๋์์ผ๋ฉฐ, 75๋ช ์ ๊ฐ๋ฐ์๊ฐ ์ฐธ์ฌํ์ฌ ์ค๋นํ์ผ๋ฉฐ, ์ด ์ค 20๋ช ์ด ์ฒ์์ผ๋ก ๊ฐ๋ฐ์ ์ฐธ์ฌํ์ต๋๋ค. ์ฃผ์ ํ์ :
- ์ ์ฅ์์ ์ผ๋ถ๋ง ํฌํจํ๋ ๋ถ๋ถ ์ธ๋ฑ์ค(ํฌ์ ์ธ๋ฑ์ค) ๋ฉ์ปค๋์ฆ์ด ๋๋ฆฌ ์ฌ์ฉ๋ ์ค๋น๊ฐ ๋์์ต๋๋ค. ๋ถ๋ถ ์ธ๋ฑ์ค๋ ๋ถ๋ถ ๋ณต์ (์คํ์ค ์ฒดํฌ์์) ์์ ์ ์ํํ๊ฑฐ๋ ๋ถ์์ ํ ์ ์ฅ์ ๋ณต์ฌ๋ณธ์ผ๋ก ์์ ํ๋ ์ ์ฅ์์์ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ๊ณต๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค. ์ ๋ฆด๋ฆฌ์ค์์๋ git show, git sparse-checkout ๋ฐ git stash ๋ช ๋ น์ ๋ถ๋ถ ์ธ๋ฑ์ค ํตํฉ์ด ์๋ฃ๋์์ต๋๋ค. ๋ถ๋ถ ์ธ๋ฑ์ค ์ฌ์ฉ์ผ๋ก ์ธํ ๊ฐ์ฅ ๋์ ๋๋ ์ฑ๋ฅ ์ด์ ์ "git stash" ๋ช ๋ น์์ ๋ํ๋ฉ๋๋ค. ์ด ๋ช ๋ น์ ์ผ๋ถ ์ํฉ์์ ์คํ ์๋๊ฐ 80% ์ฆ๊ฐํ๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
- ์ ์ฅ์์์ ์ฐธ์กฐ๋์ง ์๋(๋ธ๋์น๋ ํ๊ทธ์์ ์ฐธ์กฐ๋์ง ์๋) ์ฐ๊ฒฐํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ํจํนํ๊ธฐ ์ํด ์๋ก์ด "ํฌ๋ฌํํธ ํฉ" ๋ฉ์ปค๋์ฆ์ด ๊ตฌํ๋์์ต๋๋ค. ์ฐ๊ฒฐํ ์ ์๋ ๊ฐ์ฒด๋ ๊ฐ๋น์ง ์์ง๊ธฐ์ ์ํด ์ญ์ ๋์ง๋ง ๊ฒฝ์ ์กฐ๊ฑด์ ํผํ๊ธฐ ์ํด ์ญ์ ๋๊ธฐ ์ ์ ํน์ ์๊ฐ ๋์ ์ ์ฅ์์ ๋จ์ ์์ต๋๋ค. ๋๋ฌํ ์ ์๋ ๊ฐ์ฒด์ ๋ฐ์ ๊ธฐ๊ฐ์ ์ถ์ ํ๋ ค๋ฉด ์ ์ฌํ ๊ฐ์ฒด์ ๋ณ๊ฒฝ ์๊ฐ๊ณผ ํจ๊ป ํ๊ทธ๋ฅผ ์ฒจ๋ถํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ณตํต ๋ณ๊ฒฝ ์๊ฐ์ ๊ฐ๋ ํ๋์ ํฉ ํ์ผ์ ์ ์ฅํ ์ ์์ต๋๋ค. ์ด์ ์๋ ์์ง ์ญ์ ํ ์ ์๊ณ ์ฐ๊ฒฐํ ์ ์๋ ์๋ก์ด ๊ฐ์ฒด๊ฐ ๋ง์ ๋ ๊ฐ ๊ฐ์ฒด๋ฅผ ๋ณ๋์ ํ์ผ์ ์ ์ฅํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ ์๋ "cruft packs" ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ฉด ์ฐ๊ฒฐํ ์ ์๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ํ๋์ ํฉ ํ์ผ์ ์ ์ฅํ๊ณ ".mtimes" ํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ์ ์ ์ฅ๋ ๋ณ๋์ ํ ์ด๋ธ์ ๊ฐ ๊ฐ์ฒด์ ์์ ์๊ฐ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ํ ์ ์์ต๋๋ค.
- Windows ๋ฐ macOS์ ๊ฒฝ์ฐ ํ์ผ ์์คํ ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๋ ๋ฉ์ปค๋์ฆ์ด ๋ด์ฅ๋์ด ์์ด "git status"์ ๊ฐ์ ์์ ์ ์ํํ ๋ ์ ์ฒด ์์ ๋๋ ํฐ๋ฆฌ์ ๋ํ ๋ฐ๋ณต์ ํผํ ์ ์์ต๋๋ค. ์ด์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ธฐ ์ํด Watchman๊ณผ ๊ฐ์ FS์ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๋ ์ธ๋ถ ์ ํธ๋ฆฌํฐ๋ฅผ ํํฌ๋ฅผ ํตํด ์ฐ๊ฒฐํ ์ ์์์ง๋ง ์ด๋ฅผ ์ํด์๋ ์ถ๊ฐ ํ๋ก๊ทธ๋จ ์ค์น ๋ฐ ๊ตฌ์ฑ์ด ํ์ํ์ต๋๋ค. ์ด์ ์ง์ ๋ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด ์์ผ๋ฉฐ "git config core.fsmonitor true" ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํ์ฑํํ ์ ์์ต๋๋ค.
- "git sparse-checkout" ๋ช ๋ น์์ ๋ถ๋ถ ๋ณต์ ๋ฅผ ์ํ ํ ํ๋ฆฟ์ ์ ์ํ๋ ๋ฐฉ๋ฒ์ธ "-cone" ๋ชจ๋์ ๋ํ ๋์ ์ง์์ด ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ฒ์ผ๋ก ์ ์ธ๋์์ต๋๋ค. ์ต์ ํ ๋ถ๋ถ ์ธ๋ฑ์ค ์ฌ์ฉ์ ํ์ฉํ์ง ์๋ ".gitignore" ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ ํ์ผ์ ๋์ดํ๊ธฐ ์ํ ๋ณต์ ์์ ์ ๋๋ค.
- ๋ณ๊ฒฝ ์ฌํญ์ ๋์คํฌ์ ํ๋ฌ์ํ๋๋ก fsync() ํธ์ถ์ ๊ตฌ์ฑํ๋ ์ ์ฐ์ฑ์ด ํฅ์๋์์ต๋๋ค. "๋ฐฐ์น" ๋๊ธฐํ ์ ๋ต์ ๋ํ ์ง์์ด "core.fsyncMethod" ๋งค๊ฐ๋ณ์์ ์ถ๊ฐ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋จ์ผ fsync()๋ก ์ฌ์ค์ ๋๋ ์ฐ๊ธฐ ์ ์ฅ ์บ์์ ๋ณ๊ฒฝ ์ฌํญ์ ๋์ ํ์ฌ ๋ง์ ์์ ๊ฐ๋ณ ํ์ผ์ ์ธ ๋ ์์ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค. ๋ถ๋ฅด๋ค. "git add" ๋ช ๋ น์ ์ฌ์ฉํ์ฌ 500๊ฐ์ ํ์ผ์ ์ถ๊ฐํ ํ ์คํธ๋ ์ ๋ชจ๋๊ฐ ํ์ฑํ๋์์ ๋ 0.15์ด ๋ง์ ์๋ฃ๋์์ผ๋ฉฐ, fsync() ํธ์ถ์ ํ์ผ๋น 1.88์ด๊ฐ ์์๋์์ผ๋ฉฐ, fsync๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ - 0.06์ด๊ฐ ์์๋์์ต๋๋ค.
- "git log" ๋ฐ "git rev-list"์ ๊ฐ์ ๋ถ๊ธฐ ์ํ ๋ช ๋ น์๋ ์ด์ "X"๋ณด๋ค ์ค๋๋ ์ปค๋ฐ์ ๋ํ ์ ๋ณด๋ฅผ ํํฐ๋งํ ์ ์๋ "-since-as-filter=X" ์ต์ ์ด ์์ต๋๋ค. "-since" ์ต์ ๊ณผ ๋ฌ๋ฆฌ ์ ๋ช ๋ น์ ์ง์ ๋ ์๊ฐ๋ณด๋ค ์ค๋๋ ์ฒซ ๋ฒ์งธ ์ปค๋ฐ ์ดํ์๋ ๊ฒ์์ ์ค์งํ์ง ์๋ ํํฐ๋ก ๊ตฌํ๋ฉ๋๋ค.
- "git ์๊ฒฉ" ๋ช ๋ น์์ "-v" ํ๋๊ทธ๋ฅผ ์ง์ ํ๋ฉด ์ ์ฅ์์ ๋ถ๋ถ ๋ณต์ ์ ๋ํ ์ ๋ณด๊ฐ ํ์๋ฉ๋๋ค.
- "warn", "die" ๋ฐ "allow" ๊ฐ์ ์ฌ์ฉํ ์ ์๋ "transfer.credentialsInUrl" ์ค์ ์ ์ถ๊ฐํ์ต๋๋ค. "remote." ๋งค๊ฐ๋ณ์์ ์ง์ ๋ ๊ฒฝ์ฐ .url" ์ผ๋ฐ ํ ์คํธ ์๊ฒฉ ์ฆ๋ช ์ ์ฌ์ฉํ์ฌ "๊ฐ์ ธ์ค๊ธฐ" ๋๋ "ํธ์" ์์ ์ ์ํํ๋ ค๊ณ ์๋ํ๋ฉด "transfer.credentialsInUrl" ์ค์ ์ด "die"๋ก ์ค์ ๋ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ "warn"์ผ๋ก ์ค์ ๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๊ฐ ํ์๋๋ฉด์ ์คํจํฉ๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก Perl์์ C๋ก ๋ค์ ์์ฑ๋ "git add -i" ๋ช ๋ น์ ๋ํํ ๋ชจ๋์ ์๋ก์ด ๊ตฌํ์ด ํ์ฑํ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru