git push 실행 시 에러 해결

git push를 실행했을 때 다음과 같은 에러가 발생했다면??

 ! [rejected]        premium -> premium (fetch first)
error: failed to push some refs to 'https://github.com/~~~'

내가 로컬 레포지토리를 수정하는 동안 다른 개발자에 의해 리모트 레포지토리에 변화가 생겼다면 바로 git push를 쓸 수 없기 때문에 위와 같은 에러가 발생한다. 이때는 경우에 따라 2가지 방법이 있다.

 

  1. 수정된 내용을 확인할 필요가 없는 경우
  2. 수정된 내용을 먼저 확인하고 싶은 경우

1. 수정된 내용을 확인할 필요가 없는 경우

리모트 레포지토리에서 코드를 수정한 개발자를 신뢰하여 수정된 내용을 확인할 필요가 없을 경우, git pull을 한 다음 git push를 하면 된다. 

 

그런데 git pull을 실행했을 때 다음과 같은 에러가 발생할 수 있다. 

CONFLICT (content): Merge conflict in License.txt

https://becoming-developer.tistory.com/8 해결 방법은 이 링크를 참조하면 된다. 

 

2. 수정된 내용을 먼저 확인하고 싶은 경우

다른 개발자가 어떤 내용을 수정했는지 먼저 보고 싶은 경우에는 아래의 git fetch 커맨드를 활용할 수 있다. 

  • git fetch : 로컬 레포지토리에서 현재 HEAD가 가리키는 브랜치의 업스트림(upstream) 브랜치로부터 최신 커밋들을 가져옴(가져오기만 한다는 점에서, 가져와서 머지까지 하는 git pull과는 차이가 있음)

1. git bash 터미널에서 git fetch 실행

$ git fetch
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 689 bytes | 86.00 KiB/s, done.
From https://github.com/~~~
   68437c2..4cb5b5d  premium    -> origin/premium

2. git diff 커맨드를 통해 수정된 내용 확인

git diff [로컬 레포지터리의 브랜치] [리모트 레포지터리의 브랜치]

ex) git diff premium origin/premium

 

3. 리모트 레포지토리의 브랜치에 문제가 있을 때

   아래 2가지 방법 중 선택하면 된다. 

  1. 잘못된 코드를 작성한 개발자에게 코들르 고치고 다시 리모트 레포지토리에 올려달라고 하기
  2. 잘못된 부분을 알아서 해결하고 다시 git push 하기

2번 방법의 경우:

1. git bash 실행 후 아래 커맨드 입력

git merge [리모트 레포지터리의 브랜치]

2. visual studio code에서 파일 수정 후 저장

3. git bash에서 다음 커맨드 실행

git add .
git commit -m "커밋 메시지"
git push

 

코드를 누가 작성했는지 보기

  • git blame [파일명] : 특정 파일의 내용 한줄한줄이 어떤 커밋에 의해 생긴 것인지 출력 
  • git show [궁금한 커밋 아이디] : 더 자세히 보기, 실행 후 나가려면 q 입력

 

직전에 Remote Repository에 올라간 커밋 취소

  1. git revert [되돌리고 싶은 커밋아이디] : 특정 커밋에서 이루어진 작업을 되돌리는(취소하는) 커밋을 새로 생성(git log명령어를 통해 커밋아이디 확인 가능)
  2. 커밋 메시지를 입력하라는 창이 뜨면 (원하면 커밋 메시지 변경하고) :wq 입력
  3. git push

여러 커밋 취소

  1. git revert [커밋 아이디]..[커밋아이디] : 첫 번째에 쓴 커밋 아이디의 다음 커밋부터 두 번째에 쓴 커밋 아이디까지의 커밋에서 이루어진 작업을 취소하는 커밋을 생성
  2. git push

 

출처: 코드잇 Git 강의

'Git' 카테고리의 다른 글

git pull error 해결 방법  (0) 2023.05.19
[Git] Open Source Software  (0) 2023.04.06
브랜치 사용하기  (0) 2022.12.30
커밋 다루기 정리 노트  (0) 2022.12.30
Github에서 다른 프로젝트 가져오기  (0) 2022.12.30

+ Recent posts