git push 에러

혜미·2021년 12월 13일
0

TIL

목록 보기
14/29
post-thumbnail

이번 에러 요약

에러 원인 요약

  1. VSCode에서 이름이 main인 브랜치를 새로 만들어버렸다(실수..)
  2. README.md 파일이 내 컴퓨터에 있는데(create-react-app을 실행하면 자동으로 생김) 깃허브에서 리포지토리를 만들 때도 README.md라는 파일을 만들어버렸다(이 파일을 만들겠다는 옵션에 체크를 했다)

이렇게 두 가지가 원인이었던 것 같다.

해결한 방법 요약

  1. 에러 로그를 잘 읽어보자(이번에 나온 에러 로그는 그래도 비교적 친절했던 것 같다)
  2. VSCode에서 제안하는 방법을 따라보자(VSCode 자체 기능인지 gitlens 확장 프로그램 기능인지 모르겠지만, merge 커밋 메시지도 자동으로 입력해 주고 지금 어떤 문제를 해결해야 하는지도 알려준다.) - 아래 첨부한 캡처 사진 참고

에러 해결 과정(길다..)

vscode 명령어 검색창에서 git push를 입력하고 실행했더니 순서대로 아래와 같은 에러 메시지가 나왔다.

검색해 보니 첫 번째 메시지는 원격 저장소 이름을 정확하게 언급해 주지 않았기 때문에 나온 메시지라고 한다.

로그 창에서 어떻게 하라고 알려주고 있다. (3번째 줄 - to push the current branch and ...)
그리고 밑에서 5번째 줄을 보면, 원격저장소에 내가 현재 작업중인 파일이 있어서 업데이트가 거절됐다고 나온다.

생각해 보니, 깃허브 리포지토리를 만들 때 습관적으로 'readme 파일 만들기'에 체크를 했다. 그리고 깃허브에서 리포지토리 만들기 전에 내 컴퓨터에서 코딩할 때 README.md라는 파일을 직접 만들었다. 그냥 메모장으로 쓰려고... 근데 같은 이름을 쓴 게 문제였나보다.(아마도..)

이미 커밋을 해 버렸는데..



revert를 하기 위해 gitlens라는 확장프로그램을 받았다. 왼쪽에서 소스 제어(점 세개 연결된 아이콘) -> commits라는 카테고리에 있는 커밋 내역 중 원하는 내역에 해당하는 undo commit 버튼을 클릭했더니 커밋이 취소됐다! 커밋했던 파일들이 다시 스테이징 상태로 돌아간 것 같다.
README.md 파일을 제외하고(더 이상 필요하지 않은 파일이라 그냥 삭제했다) 다시 커밋했다.

commit undo가 제대로 됐는지 모르겠지만(git log는 로그라 그런지 내역이 계속 보였다), push하려고 하면 여전히 같은 에러가 나오고 vscode 화면 맨 왼쪽 아래에 push할 내역이 있다는 알림도 뜨지 않았다.

에러 메시지에서 제안하는 대로 pull을 했는데 fetch는 했지만 merge는 하지 못한 듯하다.(pull은 fetch + merge)

관련 없는 히스토리를 강제로 허용하는 명령어를 입력했는데도 안 된다. 충돌하는 부분을 직접 고치고 커밋하라고 하는데... 아까 한 commit undo가 제대로 안 됐나?

아까는 보이지 않았던 'Resolve conflicts before mergint into main'이라는 메시지가 뜬다. 느낌표를 누르니 아래와 같은 readme 파일이 나온다.


이건 처음에 create-react-app을 실행했을 때 자동 생성된 readme 파일인데. 경고 메시지를 보니 'conflict in index (staged)'라고 나오는데, 이 부분이 stagint area에 있나? 내가 직접 메모한 readme파일이 아니라 처음에 자동 생성된 readme 파일이 문제였나보다.(매우 헷갈림...)

깃허브 쪽에서 readme 파일을 삭제해서 conflict를 없애는 게 더 간단할 것 같아서 github에 있는 readme 파일을 삭제했다.

그랬는데도 해결이 안 돼서
위에 있는 캡처 화면에 나온 Merge branch~~메시지(자동으로 입력되어 있었다)를 그대로 두고 체크 버튼을 눌렀더니 merge가 됐다. 그랬더니 conflicts가 해결이 된 것 같다. (위 캡처 화면에 왼쪽에 있는 경고 메시지가 사라짐)

이제 pull 명령어를 입력하면 pull이 잘 된다.(위 캡처 사진)


명령어 검색 기능을 이용해서 git push를 다시 시도했는데 여전히 'main' 분기에는 상향 분기가 없습니다. 이 분기를 게시하시겠습니까?' 라는 메시지가 뜬다. 확인을 눌러서 에러 메시지를 보려고 했는데 push가 돼 버렸다;;

처음 commit을 시도했을 때 vscode에서 아래 맨 왼쪽 브랜치 아이콘을 눌러도 main 브랜치가 안 보여서 '새 분기 만들기'를 누르고 'main'을 입력했는데, 이때 이름이 main인 새 브랜치가 만들어진 것 같은데 이게 실수였다. 위 캡처 사진에서 밑줄친 부분은 'main이라는 이름의 브랜치와 merge해서 (디폴트 브랜치인, 원조) main 브랜치에 올렸다'는 의미인 것 같다.

'create product lists'라는 커밋 메시지도 기록이 됐고, 제일 마지막에 merge한 부분에 해당하는 메시지도 기록됐다. push를 했으니까 그 동안 commit한 내역이 모두 원격 저장소에 반영된 듯하다.

아무튼 무사히 commit, push 완료!

0개의 댓글