페이지 트리

이 문서는 Git 사용중 OS 간의 개행 처리 방법이 다른 문제를 해결하는 개행 처리 설정 방법에 대한 가이드를 공유하기 위해 작성되었다. 



개요

Git config 적용 범위는 시스템 설정, 글로벌 설정, git 저장소별 설정이 가능하고 우선순위는 git 저장소 → 글로벌  → 시스템 순이다. (git 저장소가 가장 높음)

특별하게 저장소에 별도로 설정할 일이 있는 경우를 제외하고 일반적으로 사용자 레벨인 글로벌에 config를 설정한다.


Config 파일 위치 :


  • git저장소 : 저장소\.git\config
  • 글로벌 : C:\Users\사용자계정\.gitconfig
  • 시스템 : C:\ProgramData\Git\config


autocrlf 설정

사용자 각자가 git bash에서 아래 config 설정 입력. .gitattributes의 경우 eclipse의 egit에서 해당 파일을 읽을 수 없어서 미사용.


Windows 환경

윈도우에서는 CRLF 를 사용하므로 저장소에서 가져올 때 LF 를 CRLF 로 변경하고 저장소로 보낼 때는 CRLF 를 LF로 변경하도록 true로 설정한다.

git config --global core.autocrlf true


Linux, MAC, Unix 환경

리눅스, 맥, 유닉스는 LF 만 사용하므로 input 으로 설정한다.

git config --global core.autocrlf input


파일모드 false 설정

git이 리눅스의 파일모드를 감시하기 때문에 파일 권한으로 인하여 파일이 git status에 변경된 이력으로 노출될 수 있음.


다음 설정을 통해서 filemode를 false 설정한다.

git config --global core.filemode false

git config 설정 적용 확인

git config --list

Eclipse에서 Git config 적용

일반적으로 Eclipse의 git config는 git의 config를 바라보고 있으나 Eclipse에서도 git config 설정이 가능하다.


  • 경로: 메뉴 > Window > Perference > Team > Git > Configuration


User Settings 탭에서 Add Entry 등록


  • key : autocrlf / Value : true
  • Key : filemode / Value : false

crlf 변경하여 다시 적용하는 방법

git repository를 새로 Clone 받았을때 아무런 변경도 하지 않았는데 Changes에 파일들이 변경이 되었다고 나오면 개행이 달라서 변경이 된 것으로 노출되는 것이다.


git에서 관리하는 파일의 개행이 깨졌을 경우 복구하는 방법은 다음과 같다. 


  1. 본인의 작업 환경 crlf 설정 확인(Window의 경우 crlfauto = true)
  2. eclipse에서 clone import(git bash나 다른 클라이언트에서 clone진행시 클라이언트의 기능에 의해서 자동으로 개행처리해줘서 문제가 발생하지 않을 수 있음)
  3. workspace에서 git bash로 접속
  4. git status 실행 시 개행으로 인하여 change로 변경된 파일들 리스트가 출력
  5. git add . (.project파일을 제거)
  6. git commit -m "crlf change"
  7. git push
  8. commit change에서 + -가 개수 동일한지 확인

CRLF / LF 보기상 차이점

git diff를 입력하면 파일의 개행 변경 내용을 확인 할 수 있다.

[CRLF -> LF로 변경된 예시]
-This is line 1^M
-This is line 2^M
-This is line 3^M
+This is line 1
+This is line 2
+This is line 3

[LF -> CRLF로 변경된 예시]
-This is line 1
-This is line 2
-This is line 3
+This is line 1^M
+This is line 2^M
+This is line 3^M
  • 레이블 없음