TroubleShooting

[GitHub] ! [rejected] ScoreCheck -> ScoreCheck (fetch first) error: failed to push some refs to URL

KJihun 2023. 6. 13. 22:10
728x90

오늘은 숫자야구를 페어 프로그래밍을 통해 구현했다. 첫 페어 프로그래밍이었다.

나와 페어였던 분도 미리 작성해 왔기에 간단하게 코드리뷰 진행 후, 내비게이터와 코더로 역할을 나눠 코드를 작성했다.

그 후, 각각 파트를 나눠 하나의 레포지토리에 add, commit, push를 하기로 했다.

 

초반에는 명령어 순서조차 몰라서 정신이 없었다.

PR까지 완료했으나 브랜치 생성을 하지 않았다거나, 커밋을 메인 브랜치에서 하거나 등등 여러 실수가 있었다.

그러다가 어느정도 익숙해졌다 싶었을 즈음 처음 보는 에러가 발생했다.

 

! [rejected] ScoreCheck -> ScoreCheck (fetch first) error: failed to push some refs to <url주소>

hint: (e.g., 'git pull ...') before pushing again.

hint: See the 'Note about fast-forwards' in 'git push --help' for details.

 

찾아보니

1. 로컬 브랜치에서 푸시하려는 변경 사항이 원격 저장소의 현재 상태와 충돌하는 경우

2. 해당 URL 주소에 대한 쓰기 권한이 없는 경우

3. 로컬과 원격 저장소의 브랜치가 동기화되지 않은 경우

주로 발생하는 에러라고 한다. 그리고 그 아래에 나와있는 힌트를 보니

 

hint: (e.g., 'git pull ...') before pushing again 메시지는

git pull을 사용하여 원격 저장소의 최신 변경 사항을 가져와서 로컬 브랜치를 업데이트하라는 뜻이었다. 
로컬 저장소에 변경 사항을 푸시하지 않아 원격 저장소와 로컬 저장소 간에 차이가 발생한 경우이다.
git pull 명령을 실행하면 로컬 브랜치가 원격 브랜치와 일치하도록 업데이트된다.

 

hint: See the 'Note about fast-forwards' in 'git push --help' for details 메세지는

충돌을 무시하고 푸시할 수 있는 명령어인 `--force`와 `+` 를 사용하는 푸시방법에 대해 설명하고 있다.

 

아래의 힌트를 참고해 강제로 푸시해 보았다.

git push origin +브랜치명

무사히 실행되었다!

git을 사용하며 에러 처리도 해보며 git에서 자주 사용하는 기능들은 모두 사용 할 수 있게 되었다.

하지만 이번에는 강제로 Push 하는 방법으로 해결하였으나 

강제로 하는 것보다 pull을 사용해 원격 저장소를 동기화시키는 게 충돌을 해결할 수 있는 더 안전한 해결책이기에,

앞으로 같은 에러가 발생하면 pull을 이용해 해결해야겠다.