5. Github 로컬 저장소 변경하기

2023. 1. 19. 17:04Road to Developer

나의 첫 문제 해결의 로그를 남기보려고한다. 사실상 이런 내용이 진정한 기술 블로그의 역할이 아닐까 싶다. 사실 git, github가 개발자들에게는 너무나 익숙하지만 개발 공부를 시작한지 얼마안된 나로서는 정말 난관이었다. 일단 commit조차 몰랐기에 모르는 용어가 있으면 다 찾아보고 또 다운로드하고 파일을 온라인으로 옮긴다는, 그냥 클라우드 서버에 올린다는 생각만 하고 있었는데 원하는대로 구성하기가 힘들었다.

 

 일단 올리는 코드는 쉽게 찾아서 할 수 있었지만 로컬 저장소를 설정하고 연결하는 작업에서 나도 꽤나 헤맸다. 돌이켜보면 로컬 저장소 설정이 잘못되었다는 점을 문제라고 인식하기까지가 오래걸렸다. 자꾸 내가 원치 않는 곳에 로컬 저장소가 새로 만들어지고 불필요한 파일들이 올라가다보니 github 저장소가 정리가 안되었고 스트레스만 받고 하고싶지가 않았다. 하지만, 매일 커밋을 해서 올리지 않으면 나중에 내가 꾸준하게 코딩을 해왔다는 것을 기업에게 증명하기 힘들뿐더러 어차피 나중에 하더라도 해야만하는 일이라 미룰 수 없었다. 그래서 공부를 제쳐두고 시간을 딱 비워두고 해결하지 않으면 자리를 뜨지 않겠다는 마음으로 github 로컬 저장소 변경을 구글 검색창에 타이핑했다. 

 

1. 올리는 방법

 

1-1 내가 올릴 파일들이 있는 곳에서 우클릭을 통해 Git Bash Here를 클릭한다. 이 후 터미널이 열리고 거기에서 코드를 작성한다. 이 곳에 내부저장소가 되는 것인지는 아직 모르지만 해당 파일들이 올라간다는 것을 파악했다.

 

1-2 git init을 입력하여 해당 폴더에서 git 저장소를 시작한다.

 

1-3 git add [폴더 이름] or [파일 이름] or .을 작성하여 올릴파일들을 stage에 올린다. .을 치게 되면 전체 파일을 올린다. add를 통해서 바로 github에 올리는 것이 아니라 stage라는 준비 단계 같은 절차가 있다. 이후에 commit을 통해서 stage 단계에서 있는 파일들이 올라간다.

 

1-4 local과 github 연결을 확인한다. git remote add origin [gibhub 저장소 주소]를 입력하여 로컬과 연결을 하고  git remote -v를 통해서 연결이 잘되었는지 확인할 수 있다. 

 

1-5 git commit -m을 통해서 커밋할 때 같이 올라갈 메시지를 입력한다. 새로 변경 사항을 작성하여 정보를 쉽게 할 수 있도록 한다.

 

1-6 git push origin main을 통해서 commit을 완료한다.

 

2 내가 겪은 문제 상황

 

2-1 add 후에 CRLF will be replaced by LF in [문제되는 파일] 에러

이 문제는 LF, CRLF를 알아야 이해가 된다. LF는 Line-Feed로 커서는 그 자리에 그대로 둔 상황에서 종이만 한 줄 올려 줄을 바꾸는 동작이고 CR은 Carriage Return으로 현재 커서를 줄 올림 없이 가장 앞으로 옮기는 동작을 의미한다. CRLF는 Carriage-Return+Line-Feed으로 둘다 합쳐서 쉽게 말하면 종이를 한 줄 올려 다음 줄로 가고 커서를 맨 앞으로 보내는 것이다. 옛날 타자기에서 나온 용어라고 하는데 컴퓨터에서 그대로 개념이 적용되고 있다. 여기서 문제는 운영체제 마다 줄을 바꾸는 방식이 달라서 경고 메시지가 뜬 것이다.

 

Window는 CRLF를 사용하고 Unix/Linux는 LF로 사용한다고 한다. 컴퓨터는 진짜 시키는 것만 하기 때문에 CRLF나 LF중 뭘 할지 몰라서 경고창으로 유저에게 확인시키고 자기가 알아서 바꿔준다는 메시지다. 나의 경우 원도우를 쓰기 때문에 위 경고 창의 문구에서 CRLF와 LF 위치가 바뀌었을 것이다. (LF는 CRLF로 바뀔 것이다.)

 

TMI를 종료하고 자동 변환을 설정하는 core.autocrif 코드로 해결할 수 있고 시스템 전체를 변경할 때는 git config --global core.auto true로 해결가능하며 문제가 되는 파일만 변경할 때는 --global을 빼고 입력하면 된다.

 

2-2 push 후에 error:src refspec master does not match any 에러

 이 문제는 내가 올리는 폴더 내용과 github 저장소의 내용이 다른 상황에서 github의 파일을 pull(다운로드를 pull이라고 부른다. 업로드는 push)없이 push하려고 하면 발생한다. 왜냐면 로컬 저장소 내용이 그대로 올라가기 때문에 기존 올라가 있는 내용들 중 로컬에 없는 내용은 삭제된다.

 

해결 방법은 그냥 다시 init부터 시작해서 하면 잘된다.

 

일단 편하게 올리고 편집하는 방법을 깨달아서 너무 속이 시원하다. 아직 깊이 있는 활용법을 배운 것은 아니지만 한 걸음 내딛었다는 생각에 흡족하다.