본문 바로가기
git&github

Git&GitHub 에러와 해결법

by seed0335 2023. 5. 23.

git&github에서 자주 발생하는 에러와 대처법에 대해서 서술하는 내용입니다.

 

구체적인 해결법 이전에 생각해보기

  1. git&github를 사용하면서, 원인불명에 에러가 너무 자주 발생한다거나, 실수가 많다면, 전체적인 공부를 한 후 하나 하나의 문제를 푸는 방식이 효과적입니다. 개별 에러(나무)만 보다보면 지치기 쉽습니다. 전체적으로 모든 과정은 알고 그 안에서 어떤 부분이 안되는지 알면 해결이 쉽습니다.
  2. 원인과 결과를 발생시킨 행동을 차근차근히 분석해보기
    1. 보통 명령어를 사용하다 보면 본인이 무엇을 했는지 원인 파악보다, 문제 해결에 급급한 경우가 있습니다. (굉장히 지양해야 될 자세라고 생각합니다.)
    2. 그렇게 되면 최악의 경우 상황이 더 꼬여서 풀 수 없게 됩니다.
      1. 안된다고 무작정 치게 되면 오류 메시지가 섞여서 자신이 무슨 오류를 냈는지 화면상에서도 기억상에서도 멀어집니다. 
    3. 해결 순서
      1. 문제 발생
        1. $ git commit -m "1"
          On branch main
          Your branch is up to date with 'origin/main'.

          nothing to commit, working tree clean
      2. 자신이 한 행동 돌아보기
        1. 자신이 어떤 일을 하려고 했다. 예시) 파일 버전을 저장하여 관리하고 싶었다.
        2. 그래서 어떤 행동을 했다 예시) git add. 후 git commit -m ""을 했다
        3. 위에 에러가 발생했다.  
        4. 전체 행동 역순으로 되집어보기. 무의식적으로 화면을 안 보고 쓰다보니 오타를 냈구나.  
        5. 이런 과정으로 해결이 가능합니다. 예) git add .  해결!!
  3. 오류 메시지가 영어로 나와도 당황하지 않기(해답은 오류 메시지에 있다.) - 3가지 오류 모두 명령어 입력실수 
    1. 예시1) [git add .]  → [git add.] 입력한 경우를 생각해봅시다. 스페이스 하나 차이지만, 오류가 납니다. 
      1. git: 'add.' is not a git command. See 'git --help'.
        The most similar command is
                add
      2. 위 상황에서 영어를 읽지 않고, 습관대로 왜 명령어가 안되지 뭐가 문제지 하면서 찾아보기 보다는
      3. 오류 메시지를 읽으면, add.이 깃 명령어가 아니구나, 아 맞다 add .로 쳐야 되지라고 알 수 있게 됩니다.  
    2. 예시 2) git log --oneline → git log -oneline 입력한 경우
      1. fatal: unrecognized argument: -oneline 
      2. 위 상황도 2-2번과 다르지 않습니다. 파파고 번역기를 쓰면 '인정받지 못한 주장'이라고 나옵니다.
      3. 아 내가 명령어를 잘못쳐서 제대로 쓰지 못했나?
      4. 그러면 책이나, 블로그에서 명령어를 제대로 썻는지 확인 후 고치면 됩니다.
    3. 예시 3) git log --oneline → git log oneline
      1. 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>...]'
      2. 위 상황도 다른 상황과 다르지 않습니다.
      3. 파파고 번역 : fatal: 모호한 인수 'oneline': 알 수 없는 수정본 또는 경로가 작업 트리에 없습니다.
        다음과 같이 '--'을 사용하여 경로와 수정본을 구분합니다
      4. 경로를 알수가 없는 오류구나
      5. 정확한 명령어가 무엇인지 확실한 곳(책, 공식사이트)에서 찾아보기
      6. 입력 후 해결함 
  4. 좋은 책을 곁에 두고 확인하기
    1. 책에는 굉장히 상세하게 전 과정이 설명 되어 있습니다. 
    2. 그리고 각종 블로그보다, 검수를 거쳐서 나온 것이기 때문에 신뢰성이 높습니다. (블로그는 내 실수인지, 저자가 기록을 잘못했는지 확인할 방법이 없습니다.)
    3. 본인이 공부한 책은 다른 사람이 만든 블로그보다 읽기 편하고(한번 읽어본 내용이기 때문에 찾기도 편합니다.), 문제된 부분, 많이 실수하는 부분을 기록하는 것도 가능합니다.
    4. 책을 한권 추천드리자면, 모두의 깃&깃허브 책을 보고, 천천히 전체 과정을 공부해보시기를 추천드립니다. 
  5. 에러를 해결했다면 본인만의 사소한 실수로 넘기지 말고, 공유하기
    1. 한국은 공유문화가 약하다고 합니다. 내가 초보자로써 30분 ~ 1시간 문제를 놓고, 허비했다면, 다른 사람도 똑같이 실수를 하고 있을 가능성이 높습니다. 서로 도와가면 발전하는 문화를 가지는 것이 중요하다고 생각합니다.  

오류를 확인할 수 있는 명령어

  1. git status : 현재 작업 디렉터리 상태 확인하기 
  2. git log --oneline : 커밋 상태를 확인 가능
  3. 2. git branch : 현재 브랜치 상태를 확인 가능 (어떤 브랜치에서 작업 중인가?)
  4. 3. git remote -v : 원격 저장소 이름 조회 (연결 상태 확인)

구체적인 상황과 해결 방법 

개인

  1. git 명령어 연습 중 본인 작성 데이터가 삭제됨
    1. git log --oneline 으로 상황 확인
    2. git reset 사용 여부x, 폴더 삭제x
    3. git revert 사용 여부x
    4. 헤더가 main으로 되어 있는 것을 확인
    5. git branch 확인
    6. main, 본인 브랜치 있으나, main이 체크아웃 됨
    7. 본인 브랜치로 체크아웃 : git checkout 본인 브랜치
    8. 문제 해결
  2. 작업 내용 변경 후 깃허브에 푸쉬하려고 했으나, 아래 메시지가 나옴
    1. 작업 내용 변경 후 커밋을 안하고, 푸쉬해서 변경할 내용이 없다는 메시지.
    2. 작업 내용 커밋 후 해결 
$ 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. 팀장 : 로컬 저장소, 깃허브 저장소
    2. 팀원 : 로컬 저장소, 깃허브 저장소
  2. 문제1-1 ( 팀원의 자료가 깃허브 사이트를  통해 팀장에게 전해지지 않음)  
    1. 팀원 로컬 저장소, 커밋 후 git push origin myname을 실행
      1. gitHub 사이트에서 확인 및 compare & pull request를 하지 않음
    2. 팀원이 팀장에게 이야기 : 푸쉬했습니다. 확인해주세요
    3. 팀장 : 풀리퀘스트 창에 받은 내용 없음
    4. 팀원 : 서버오류인 것 같아 연결 확인 등 여러가지 확인
    5. 오류 인지 :  홈페이지에서 compare & pull request 못한 것 인지함.
    6. 문제 해결 :  compare & pull request 후 해결
  3. 문제1-2 (위에 사례 후 해결 방안을 시도하던 중 발생한 예외 상황)
    1. 팀원은 push 진행함
      1. 1-1 사례를 통해 gitHub 사이트에서 compare & pull request를 알고, 사이트 방문
    2. compare & pull request 버튼 활성화 되지 않는 문제 발생
      1. 또는 한참 시간이 흘러서 compare & pull request 버튼이 사라짐
    3. 해결법 : New pull request 버튼을 누르고 보내면 된다.
  4. 문제 2 (팀장이 깃허브에 푸쉬를 함, 팀원은 풀을 받았으나 업데이트 안됨)
    1. 팀원은 팀장에게 push 오류를 의심
    2. 그러나 본인만 업데이트 안 되는 사례 발생. (또는 오류 메시지 발생)
    3. 인터넷 연결이 이상한 지 확인
    4. git remote -v 로 확인 후 실패(사이트와 정상적인 소통 확인)
    5. git clone 재시도
    6. 오류 인지 : Sink fork 버튼 안 누르고 git pull 함
    7. 해결 : sink fork 버튼 후 업데이트하고 git pull 정상 작동

 

위에 상황 외에도 본인이 겪은 상황이나, 오류 해결법들을 댓글로 남겨주시면 확인하고 추가해보겠습니다. 

감사합니다 :)

 

 

 

'git&github' 카테고리의 다른 글

인텔리제이 git&github 사용법  (0) 2023.05.24
git&github 협업 방식 3가지  (0) 2023.05.23

댓글