κ°œλ°œνŒ€μ˜ μž₯λΉ„κ°€ μ—¬λŸ¬ ν”Œλž«νΌμœΌλ‘œ κ΅¬μ„±λœ 경우 GIT ꡬ성에 따라 변경사항이 μ—†μŒμ—λ„ λ§Žμ€ 파일이 μŠ€ν…Œμ΄μ§• λŒ€μƒμœΌλ‘œ 좜λ ₯λ©λ‹ˆλ‹€.

보톡 μ€„μ˜ 끝 (EOL; End of line)을 μ²˜λ¦¬ν•˜λŠ” 방법이 OS λ§ˆλ‹€ λ‹¬λΌμ„œ λ°œμƒν•©λ‹ˆλ‹€.

많이 μ‚¬μš©λ˜λŠ” OSμ—μ„œ μ€„μ˜ 끝을 ν‘œν˜„ν•˜λŠ” 방법은 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

  • Windows λŠ” CRLF (\r\n Carage return, Line feed)
  • Unix λŠ” LF (\n Line feed)

ꡬ성

git config λͺ…λ ΉμœΌλ‘œ ꡬ성을 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ€„μ˜ 끝을 μ²˜λ¦¬ν•˜λŠ” 두가지 방법이 μ œκ³΅λ©λ‹ˆλ‹€.

core.eof

$ git config --global core.eol native

core.eol에 μ‚¬μš©ν•  수 μžˆλŠ” 값은 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

  • native

    κΈ°λ³Έκ°’, OS의 EOL μ²˜λ¦¬λ°©λ²•μ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

  • crlf

    CRLF (\r\n Carage return, Line feed)λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

  • lf

    LF (\n Line feed)λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

μ•„λž˜ λͺ…λ ΉμœΌλ‘œ ꡬ성 λ‚΄μš©μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

$ git config --global --list

core.autocrlf

git λ°μ΄ν„°λ² μ΄μŠ€μ— ν…μŠ€νŠΈ 파일의 λ³€κ²½ 이λ ₯ 데이터 μž…μΆœλ ₯μ‹œ μ€„μ˜ 끝을 μ–΄λ–»κ²Œ μ²˜λ¦¬ν• μ§€ κ²°μ •ν•©λ‹ˆλ‹€.

$ git config --global core.autocrlf true

core.autocrlf 에 μ‚¬μš©ν•  수 μžˆλŠ” 값은 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

  • false

    κΈ°λ³Έκ°’, 파일의 λ‚΄μš© κ·ΈλŒ€λ‘œ λ°μ΄ν„°λ² μ΄μŠ€ λ³€κ²½ 이λ ₯에 μž…μΆœλ ₯ν•©λ‹ˆλ‹€.

  • true

    λ°μ΄ν„°λ² μ΄μŠ€μ— μž…λ ₯ν•˜κΈ° 전에 CRLF λ₯Ό LF 둜 λ³€κ²½ν•©λ‹ˆλ‹€.

  • input

    LF λ₯Ό μ€„μ˜ 끝으둜 μ‚¬μš©ν•©λ‹ˆλ‹€.

무엇을 ν•΄μ•Ό ν•˜λ‚˜μš”?

κ°œλ°œνŒ€μ— Windows, Macos, Linux λ₯Ό 기반으둜 κ°œλ°œμ„ μ§„ν–‰ν•˜λŠ” νŒ€μ› 쀑 Windows μ‚¬μš©μžλŠ” core.autocrlf κ΅¬μ„±μ˜ 값을 true 둜 μ„€μ •ν•˜λ©΄ λ©λ‹ˆλ‹€.

PS> git config --global core.autocrlf true

Macos, Linux μ‚¬μš©μžμ˜ 경우 LF κ°€ μ‚¬μš©λ˜λ―€λ‘œ, core.autocrlf κ΅¬μ„±μ˜ 값을 input으둜 μ„€μ •ν•©λ‹ˆλ‹€.

$ git config --global core.autocrlf input

더 λ§Žμ€ λ‚΄μš©

GitHub Docs: Configuring Git to handle line endings νŽ˜μ΄μ§€μ—μ„œ 좔가정보λ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

.gitattributes νŒŒμΌμ„ μ‚¬μš©ν•΄μ„œ μ‚¬μš©μžκ°€ git ꡬ성을 λ³€κ²½ν•˜μ§€ μ•Šμ•„λ„ λ™μΌν•œ μ €μž₯μ†Œλ₯Ό μ‚¬μš©ν•΄μ„œ ν˜‘μ—…ν•˜λŠ” μ‚¬μš©μžκ°„ μ€„μ˜ 끝 처리λ₯Ό κ³΅μœ ν•˜λŠ” 방법이 μ„€λͺ…λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.