๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Git

[Git] Git ์ €์žฅ์†Œ์—์„œ ํŠน์ • ํด๋”๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ - Git 2.25 ์ดํ•˜(๊ตฌ๋ฒ„์ „)์˜ sparse-checkout ๋ฐฉ์‹

by clolee 2025. 4. 10.

๐Ÿ“‹ Git 2.25 ์ดํ•˜: ํŠน์ • ํด๋”๋งŒ sparse-checkout์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ (Deprecated ๋ฐฉ์‹)

โœ… Git 2.25 ์ด์ „์—๋Š” git sparse-checkout set ๋ช…๋ น์–ด๊ฐ€ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์—,
.git/info/sparse-checkout ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํŠน์ • ํด๋”๋งŒ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
์ด ๋ฐฉ์‹์€ ํ˜„์žฌ๋Š” Deprecated ๋˜์—ˆ์ง€๋งŒ, ๊ตฌ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ์ด๋‚˜ ํ™˜๊ฒฝ ์ƒ ์ด์œ ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ๊ตฌ์กฐํ™”ํ•ด ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


โœ… ๋ฐฉ์‹ 1: git clone์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ

๐Ÿ”น 1๋‹จ๊ณ„: ์ €์žฅ์†Œ ํด๋ก  (ํŒŒ์ผ์€ ๋‹ค์šด๋กœ๋“œํ•˜์ง€ ์•Š์Œ)

git clone --no-checkout https://github.com/username/repository.git
cd repository
  • --no-checkout: clone ์ดํ›„ ์‹ค์ œ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์ƒ๋žต
  • ์ดํ›„ sparse-checkout ์„ค์ •์œผ๋กœ ํ•„์š”ํ•œ ํด๋”๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ

โœ… ๋ฐฉ์‹ 2: git init + remote add ๋ฐฉ์‹

๐Ÿ”น 1๋‹จ๊ณ„: ๋นˆ ๋””๋ ‰ํ† ๋ฆฌ ์ดˆ๊ธฐํ™” ๋ฐ ์›๊ฒฉ ์—ฐ๊ฒฐ

mkdir repository && cd repository
git init
  • ์ƒˆ๋กœ์šด Git ์ €์žฅ์†Œ ์ดˆ๊ธฐํ™”
git remote add origin https://github.com/username/repository.git
  • ์›๊ฒฉ ์ €์žฅ์†Œ ์—ฐ๊ฒฐ

๐Ÿ”น 2๋‹จ๊ณ„: ์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ

git fetch origin
  • origin/main, origin/master ๋“ฑ์˜ ๋ธŒ๋žœ์น˜ ์ •๋ณด๋งŒ ๊ฐ€์ ธ์˜ค๋ฉฐ, ํŒŒ์ผ์€ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Œ

โœ… ๊ณตํ†ต: sparse-checkout ์„ค์ • ๋ฐ ํŠน์ • ํด๋” ๊ฐ€์ ธ์˜ค๊ธฐ

๐Ÿ”น 3๋‹จ๊ณ„: sparse-checkout ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”

git config core.sparseCheckout true
  • sparse-checkout ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๊ณ  ์„ค์ •

๐Ÿ”น 4๋‹จ๊ณ„: ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์€ ํด๋” ๋ชฉ๋ก ์ž‘์„ฑ

echo "src/main/java/" >> .git/info/sparse-checkout
echo "docs/" >> .git/info/sparse-checkout
  • ๊ฒฝ๋กœ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฃจํŠธ ๊ธฐ์ค€ ์ƒ๋Œ€๊ฒฝ๋กœ
  • ํด๋”๋Š” ์Šฌ๋ž˜์‹œ /๋กœ ๋๋‚˜์•ผ ์ •ํ™•

๐Ÿ”น 5๋‹จ๊ณ„: ๋ธŒ๋žœ์น˜ checkout

git checkout main
  • ์ง€์ •ํ•œ ํด๋”๋งŒ ๋กœ์ปฌ์— ๋‹ค์šด๋กœ๋“œ๋จ
  • ๋ธŒ๋žœ์น˜๊ฐ€ master์ธ ๊ฒฝ์šฐ๋Š” main ๋Œ€์‹  master

๐Ÿ“‚ ์˜ˆ์‹œ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ (๊ฒฐ๊ณผ)

repository/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ main/
โ”‚       โ””โ”€โ”€ java/
โ”œโ”€โ”€ docs/
  • ์ง€์ •๋œ ํด๋”๋งŒ ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์กด์žฌ
  • ์ „์ฒด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ฐ›์ง€ ์•Š์•„ ๋””์Šคํฌ ์ ˆ์•ฝ ๊ฐ€๋Šฅ

โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ (Deprecated ๊ด€๋ จ)

ํ•ญ๋ชฉ ์„ค๋ช…
์ง์ ‘ ํŽธ์ง‘ .git/info/sparse-checkout ํŒŒ์ผ์„ ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผ ํ•จ
์‹ค์ˆ˜ ์œ„ํ—˜ ์˜คํƒ€๋‚˜ ๊ฒฝ๋กœ ์˜ค๋ฅ˜ ์‹œ ์›ํ•˜๋Š” ํด๋”๊ฐ€ ๋‚ด๋ ค์˜ค์ง€ ์•Š์Œ
๋ณต์žก์„ฑ ์—ฌ๋Ÿฌ ํด๋” ์ˆ˜์ • ์‹œ ๋ฐ˜๋ณต์ ์ธ ์ˆ˜๋™ ํŽธ์ง‘ ํ•„์š”
๊ณต์‹ ์ƒํƒœ Git 2.25 ์ด์ƒ์—์„œ๋Š” Deprecated โ†’ sparse-checkout set ๋ช…๋ น์–ด ์‚ฌ์šฉ ๊ถŒ์žฅ

โœ… ํ•œ ์ค„ ์š”์•ฝ

Git 2.25 ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” core.sparseCheckout=true ์„ค์ • ํ›„ .git/info/sparse-checkout ํŒŒ์ผ์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜์—ฌ, git checkout ์‹œ ํŠน์ • ํด๋”๋งŒ ๋กœ์ปฌ์— ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹์ด ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๋Œ“๊ธ€