엘리스 수업떄 들었던 파일들을 하나하나 깃랩에 커밋했다. 그런데 js 폴더에서 .git을 해버려서 그전의 강의에서 했던 파일들도 깃랩에 업로드를 하고 싶었다. 그래서 push를 하려고 하니까 이런 오류가 계속 떴다

git pull 오류
git push 오류

https://iambeginnerdeveloper.tistory.com/entry/github-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-error-failed-to-push-some-refs-to-warning-LF-will-be-replaced-by-CRLF-in-%EA%B0%95%EC%A0%9C-push-%ED%95%98%EC%A7%80%EB%A7%88%EC%84%B8%EC%9A%94%EC%A0%9C%EB%B0%9C

구글링하다가 위 사이트에게 도움을 많이 받았다...!

https://sosoeasy.tistory.com/406

위 사이트는 내가 난 오류가 왜 난 건지 그림으로 자세히 설명해주셨다!

 

일단 js 폴더에서 origin을 제거하고 .git 폴더를 삭제해줬다. 

그리고 web 폴더에서 깃랩의 http코드를 clone해주고, pull 해줬다. 

각종 블로그글을 찾아봤을 때 원격저장소에 있는 파일과 로컬저장소의 파일이 다를 때 저런 오류가 뜬다고 했다.

그래서 일단 web폴더의 파일을 원격저장소와 같게 만들어줬다. 그리고 add하고 commit을 해줬다.

그런데 이렇게 했는데도 git push가 되지 않았다. 

 

**해결책

git pull origin master --allow-unrelated-histories

pull만 하는 게 아니라 뒤에 옵션도 더 붙였어야 했다. (로컬저장소와 원격저장소의 병합을 허용한다는 의미, 강제로 pull하겠다!)

 

master -> FETCH_HEAD에서 오류가 났다는 메시지.

FETCH_HEAD가 뭔지 궁금해서 검색해 봤다.

FETCH_HEAD => 원격 저장소에서 가져온 내용을 추적하기 위한 단기 참조.

 

git pull은 git fetch와 git merge를 합친 동작이라고 배웠다. 

FETCH_HEAD는 원격저장소에서 가져온 분기의 끝을 가리킨다. 그 다음 git merge FETCH_HEAD를 호출해서 FETCH_HEAD를 현재 분기에 병합하는 방식으로 동작한다. 그래서 원격저장소의 마지막 commit을 로컬 저장소의 commit 로그 맨 앞으로 받아온다.

 

기본적으로 merge는 원격저장소와 로컬 저장소가 공통으로 가지고 있는 commit 지점이 존재해야 한다. 그 지점부터 병합을 시도하기 때문이다! 그런데 애초에 나는 공통되는 commit이 없기 때문에 pull 을 사용할 수 없는 것이다..

 

해결책: 공통된 커밋 포인트가 없기 때문에 pull 명령어에 옵션을 추가해 강제로 pull하는 방식

참고: https://jobc.tistory.com/177

 

이렇게 하고 add,commit하고 push를 하니 잘 작동이 되었다! 아싸

push가 안됐던 순간들..

 

'엘리스 ai 트랙 > 개인 공부' 카테고리의 다른 글

비동기 통신  (0) 2022.02.08
FormData, 복리계산기 (3주차)  (0) 2022.02.07
IIFE를 알아보다가..  (0) 2022.02.05
closure 공부하기  (0) 2022.01.28
Node 객체 공부 중에  (0) 2022.01.26

+ Recent posts