git&github에서 자주 발생하는 에러와 대처법에 대해서 서술하는 내용입니다.
구체적인 해결법 이전에 생각해보기
- git&github를 사용하면서, 원인불명에 에러가 너무 자주 발생한다거나, 실수가 많다면, 전체적인 공부를 한 후 하나 하나의 문제를 푸는 방식이 효과적입니다. 개별 에러(나무)만 보다보면 지치기 쉽습니다. 전체적으로 모든 과정은 알고 그 안에서 어떤 부분이 안되는지 알면 해결이 쉽습니다.
- 원인과 결과를 발생시킨 행동을 차근차근히 분석해보기
- 보통 명령어를 사용하다 보면 본인이 무엇을 했는지 원인 파악보다, 문제 해결에 급급한 경우가 있습니다. (굉장히 지양해야 될 자세라고 생각합니다.)
- 그렇게 되면 최악의 경우 상황이 더 꼬여서 풀 수 없게 됩니다.
- 안된다고 무작정 치게 되면 오류 메시지가 섞여서 자신이 무슨 오류를 냈는지 화면상에서도 기억상에서도 멀어집니다.
- 해결 순서
- 문제 발생
- $ git commit -m "1"
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
- $ git commit -m "1"
- 자신이 한 행동 돌아보기
- 자신이 어떤 일을 하려고 했다. 예시) 파일 버전을 저장하여 관리하고 싶었다.
- 그래서 어떤 행동을 했다 예시) git add. 후 git commit -m ""을 했다
- 위에 에러가 발생했다.
- 전체 행동 역순으로 되집어보기. 무의식적으로 화면을 안 보고 쓰다보니 오타를 냈구나.
- 이런 과정으로 해결이 가능합니다. 예) git add . 해결!!
- 문제 발생
- 오류 메시지가 영어로 나와도 당황하지 않기(해답은 오류 메시지에 있다.) - 3가지 오류 모두 명령어 입력실수
- 예시1) [git add .] → [git add.] 입력한 경우를 생각해봅시다. 스페이스 하나 차이지만, 오류가 납니다.
- git: 'add.' is not a git command. See 'git --help'.
The most similar command is
add - 위 상황에서 영어를 읽지 않고, 습관대로 왜 명령어가 안되지 뭐가 문제지 하면서 찾아보기 보다는
- 오류 메시지를 읽으면, add.이 깃 명령어가 아니구나, 아 맞다 add .로 쳐야 되지라고 알 수 있게 됩니다.
- git: 'add.' is not a git command. See 'git --help'.
- 예시 2) git log --oneline → git log -oneline 입력한 경우
- fatal: unrecognized argument: -oneline
- 위 상황도 2-2번과 다르지 않습니다. 파파고 번역기를 쓰면 '인정받지 못한 주장'이라고 나옵니다.
- 아 내가 명령어를 잘못쳐서 제대로 쓰지 못했나?
- 그러면 책이나, 블로그에서 명령어를 제대로 썻는지 확인 후 고치면 됩니다.
- 예시 3) git log --oneline → git log oneline
- fatal: ambiguous argument 'oneline': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]' - 위 상황도 다른 상황과 다르지 않습니다.
- 파파고 번역 : fatal: 모호한 인수 'oneline': 알 수 없는 수정본 또는 경로가 작업 트리에 없습니다.
다음과 같이 '--'을 사용하여 경로와 수정본을 구분합니다 - 경로를 알수가 없는 오류구나
- 정확한 명령어가 무엇인지 확실한 곳(책, 공식사이트)에서 찾아보기
- 입력 후 해결함
- fatal: ambiguous argument 'oneline': unknown revision or path not in the working tree.
- 예시1) [git add .] → [git add.] 입력한 경우를 생각해봅시다. 스페이스 하나 차이지만, 오류가 납니다.
- 좋은 책을 곁에 두고 확인하기
- 책에는 굉장히 상세하게 전 과정이 설명 되어 있습니다.
- 그리고 각종 블로그보다, 검수를 거쳐서 나온 것이기 때문에 신뢰성이 높습니다. (블로그는 내 실수인지, 저자가 기록을 잘못했는지 확인할 방법이 없습니다.)
- 본인이 공부한 책은 다른 사람이 만든 블로그보다 읽기 편하고(한번 읽어본 내용이기 때문에 찾기도 편합니다.), 문제된 부분, 많이 실수하는 부분을 기록하는 것도 가능합니다.
- 책을 한권 추천드리자면, 모두의 깃&깃허브 책을 보고, 천천히 전체 과정을 공부해보시기를 추천드립니다.
- 에러를 해결했다면 본인만의 사소한 실수로 넘기지 말고, 공유하기
- 한국은 공유문화가 약하다고 합니다. 내가 초보자로써 30분 ~ 1시간 문제를 놓고, 허비했다면, 다른 사람도 똑같이 실수를 하고 있을 가능성이 높습니다. 서로 도와가면 발전하는 문화를 가지는 것이 중요하다고 생각합니다.
오류를 확인할 수 있는 명령어
- git status : 현재 작업 디렉터리 상태 확인하기
- git log --oneline : 커밋 상태를 확인 가능
- 2. git branch : 현재 브랜치 상태를 확인 가능 (어떤 브랜치에서 작업 중인가?)
- 3. git remote -v : 원격 저장소 이름 조회 (연결 상태 확인)
구체적인 상황과 해결 방법
개인
- git 명령어 연습 중 본인 작성 데이터가 삭제됨
- git log --oneline 으로 상황 확인
- git reset 사용 여부x, 폴더 삭제x
- git revert 사용 여부x
- 헤더가 main으로 되어 있는 것을 확인
- git branch 확인
- main, 본인 브랜치 있으나, main이 체크아웃 됨
- 본인 브랜치로 체크아웃 : git checkout 본인 브랜치
- 문제 해결
- 작업 내용 변경 후 깃허브에 푸쉬하려고 했으나, 아래 메시지가 나옴
- 작업 내용 변경 후 커밋을 안하고, 푸쉬해서 변경할 내용이 없다는 메시지.
- 작업 내용 커밋 후 해결
$ git push origin main
Everything up-to-date
2-1. 작업 내용 변 후 커밋 후 깃허브에 푸쉬 했지만 오류가 나옴
$ git push origin main
To github.com:seed0335/test_collaborator.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'github.com:seed0335/test_collaborator.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
1. 3번줄 참고, 깃허브에 이미 패치된 파일이 존재하여 깃 푸쉬가 거부 된 상황
2. 먼저 풀(git pull)을 받고서 깃허브 = 로컬 저장소를 맞춘 후
3. git push origin main 하면 해결
협업시
- 상황
- 팀장 : 로컬 저장소, 깃허브 저장소
- 팀원 : 로컬 저장소, 깃허브 저장소
- 문제1-1 ( 팀원의 자료가 깃허브 사이트를 통해 팀장에게 전해지지 않음)
- 팀원 로컬 저장소, 커밋 후 git push origin myname을 실행
- gitHub 사이트에서 확인 및 compare & pull request를 하지 않음
- 팀원이 팀장에게 이야기 : 푸쉬했습니다. 확인해주세요
- 팀장 : 풀리퀘스트 창에 받은 내용 없음
- 팀원 : 서버오류인 것 같아 연결 확인 등 여러가지 확인
- 오류 인지 : 홈페이지에서 compare & pull request 못한 것 인지함.
- 문제 해결 : compare & pull request 후 해결
- 팀원 로컬 저장소, 커밋 후 git push origin myname을 실행
- 문제1-2 (위에 사례 후 해결 방안을 시도하던 중 발생한 예외 상황)
- 팀원은 push 진행함
- 1-1 사례를 통해 gitHub 사이트에서 compare & pull request를 알고, 사이트 방문
- compare & pull request 버튼 활성화 되지 않는 문제 발생
- 또는 한참 시간이 흘러서 compare & pull request 버튼이 사라짐
- 해결법 : New pull request 버튼을 누르고 보내면 된다.
- 팀원은 push 진행함
- 문제 2 (팀장이 깃허브에 푸쉬를 함, 팀원은 풀을 받았으나 업데이트 안됨)
- 팀원은 팀장에게 push 오류를 의심
- 그러나 본인만 업데이트 안 되는 사례 발생. (또는 오류 메시지 발생)
- 인터넷 연결이 이상한 지 확인
- git remote -v 로 확인 후 실패(사이트와 정상적인 소통 확인)
- git clone 재시도
- 오류 인지 : Sink fork 버튼 안 누르고 git pull 함
- 해결 : sink fork 버튼 후 업데이트하고 git pull 정상 작동
위에 상황 외에도 본인이 겪은 상황이나, 오류 해결법들을 댓글로 남겨주시면 확인하고 추가해보겠습니다.
감사합니다 :)
'git&github' 카테고리의 다른 글
인텔리제이 git&github 사용법 (0) | 2023.05.24 |
---|---|
git&github 협업 방식 3가지 (0) | 2023.05.23 |
댓글