Mac 과 Windows 간 개발 시 Line Ending 이 서로 달라 코드 공유시 여러 문제가 발생한다.

 

이를 해결하기 위해 각 OS별 config설정

 

  • Windows
    • $ git config --global core.autocrlf true
    • Windows는 CRLF 를 사용하므로 저장소에서 가져올때 LF를 CRLF로 변경하고, 보낼때는 LF로 변경하도록 true로 설정
  • Linux, Mac
    • $ git config --global core.autocrlf input
    • 리눅스, 맥, 유닉스는 LF만 사용하므로 input으로 설정

'Git' 카테고리의 다른 글

자주 쓰는 명령어  (0) 2020.03.13
  • 원격 저장소 생성시 기존 폴더와 연동
    1. cd existing_folder
    2. git init
    3. git remote add origin xxxx.git(원격저장소 주소)
    4. git add . (모든 파일 stage로 올리기)
    5. git commit -m "Initial commit" (커밋 메시지 "Intial commit" 으로 커밋하기)
    6. git push -u origin master
    7.  
  • 저장소 Clone
    1. mkdir : 저장소 clone 폴더 생성
    2. git clone[주소 : http, ssh로 시작하는 주소값.git]
    3. git checkout -t [원격 저장소의 브랜치 이름 ex. origin/branch-name]
    4. git switch를 사용할 수도 있음
      • git switch -c [branche-name] : 기존 브랜치가 있더라도 변경점 무시하고 무조건 스위칭
  • 새 브랜치 생성
    • git checkout -b [branch-name]
    • 리모트 브랜치에도 생성
      • git push origin [branch-name]
    • 로컬 브랜치와 리모트 브랜치를 서로 연동하기
      • git branch --set-upstream-to origin/[branch-name]
  • 브랜치 삭제
    1. 메인브랜치로 checkout
      • git checkout [main-branch]
    2. 브랜치 삭제
      • git branch --delete [branch-name]
    3. 작업된 사항이나 commit이 이력에 남아있는 경우 강제로 삭제
      • git branch -D [branch-name]
    4. 최종적으로 리모트 브랜치도 삭제
      • git push origin :[branch-name]
  • Merge나 Pull 시 로컬 작업과 충돌이 일어나 'Your local changes to the following files would be overwritten by merge:' 메세지가 발생할 경우 해결방법은 두가지
    1. git reset --hard HEAD
      • 로컬 브랜치가 가리키는 마지막 cmmit (HEAD) 위치로 모든 변경사항 되돌리기 (로컬 변경사항이 모두 날라감! 주의)
    2. git checkout HEAD -- myfile.xxx
      • 문제시 되는 특정파일만 되돌리기
    3. untracking files 모두 삭제
      1. git clean -fd
  • Push 시 매번 원격 저장소와 브랜치명을 타이핑하는게 번거롭다면, -u 옵션을 써서 push 해보자.
    • git push -u origin [브랜치명]
    • 이 이후에는 git push만 입력해도 자동으로 해당 브랜치에 push를 해준다
  • 리모트 브랜치와 로컬브랜치의 관계를 보고싶을때
    • git remote show origin
  • 특정 유저의 로그만 보고 싶을때
    • git log --author=authorname
  • 특정 파일의 로그만 보고 싶을때
    • git log filename
  • config path 확인
    • git config --system --edit (Program Files/Git/etc/gitconfig
      • git 을 따로 받아서 next next만 했다면 해당 폴더에 존재하고, 아니면 git 설치시 설정한 경로)
    • git config --global --edit (사용자 폴더/.gitconfig)
    • git config --local --edit (각 프로젝트의 .git/config)
    • 각 config의 경로를 찾을 수 없다면 git config --list --show-origin 으로 확인가능
    • 우선순위는 local > global > system 이므로 만약 동일한 값이 양쪽에 존재할경우 덮어써짐
  • 서로 다른 두 git을 합칠때
    • 로컬에서 git으로 작업하다가 원격 저장소를 만들어 거기에 push 요청시
    • Updates were rejected because the tip of your current branch is behind... 같은 요청 발생시 아래 명령어로 해결
    • git pull origin 브런치명 --allow-unrelated-histories
      • 각각의 히스토리가 있는 git 2개를 통합시 기본적으로 거부하는데, 해당 명령은 내 로컬에 있는 히스토리로 원격 히스토리를 강제로 덮어쓰라는 명령
      • 이 상황은 local 에서 git 으로 작업하다가 gitlab에 새 프로젝트를 만든 후 거기에 --set-upstream-to 명령을 통해 연동시 발생한다.

 

'Git' 카테고리의 다른 글

Line Ending 설정  (1) 2020.09.03

+ Recent posts