Git

[Git] Git μ €μž₯μ†Œμ—μ„œ νŠΉμ • ν΄λ”λ§Œ κ°€μ Έμ˜€κΈ° - Git 2.25 μ΄ν•˜(ꡬ버전)의 sparse-checkout 방식

clolee 2025. 4. 10. 13:19

πŸ“‹ 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 μ‹œ νŠΉμ • ν΄λ”λ§Œ λ‘œμ»¬μ— κ°€μ Έμ˜€λŠ” 방식이 μ‚¬μš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€.