1. 오류 설명

- 깃으로 원격저장소에 push를 할 때 아래와 같은 오류가 자주 발생한다.

- 오류 메세지 내용은 main 에서 main으로 보낼 때 non-fast-forward 가 발생해서 거절한다는데, 

 ! [rejected]        main -> origin/main (non-fast-forward)
error: failed to push some refs to 'github.com:simDev1234/spring.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and 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. 너가 push 하기 전에 원격 저장소에서 누가 수정작업을 했었네.

2. 음, 아님 뭔가 충돌하는게 있어. 브랜치 체크아웃하고, 새 브랜치 만든 다음에 merge 해봐

3. (1)에서 말한 거의 해결 방법 -- pull 해봐

4. pull해도 안되고, 브랜치 만들어서 merge해도 안 되면, git push --help로 git 사이트에 문의해봐

 

2. 해결하기

(1) 첫번째 해결방법 : pull 하고 push 하기

git pull

 

(2) 두번째 해결방법 : branch 새로 생성하고 main으로 체크아웃 후, merge 하기

이 방법을 쓸 때 생각할점

* bash를 쓰면 Merge하기 전에 Conflict가 발생할 부분에 대해 가시적으로 눈으로 확인하기 어려울 수 있으니,

* 현장에서 사용하게 될 땐, 소스트리를 쓰는 편이 나을 것 같다. 

git branch -M newbranch           // 브랜치 생성

git push -v origin newbranch      // push

git checkout main                 // 체크아웃 -> main

git merge newbranch               // merge 
 
git status                        // 상태확인

git log --decorate --graph        // 로그확인

>> 위의 코드를 모두 다 썼다면, 깃허브의 원격저장소로 이동해서 Pull Request를 보내고, Conflict가 없으면 Merge한다.

>> Merge 후에는 안 쓰는 브랜치는 예쁘게 정리하자.

git branch -a            // 브랜치 확인

git branch -d newbranch  // 브랜치 삭제

 

+ Recent posts