상세 컨텐츠

본문 제목

[Git] git pull 할 때 fatal: Need to specify how to reconcile divergent branches. 오류

TIL

by my dev diary 2023. 6. 29.

본문

 

오류

 

 

Error message

 

dev브랜치에서 내 브랜치로 git pull을 하던 중  아래와 같은 오류가 발생했다.

hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint: 
hint:   git config pull.rebase false  # merge
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only
hint: 
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.

원격 저장소에서 로컬 저장소로 소스를 가져오는 방식은 fetch와 pull이 있다.

두 방식은 차이점이 있는데,

fetch는 소스를 가져오고 merge는 하지 않는다.

pull은 소스를 가져오고 merge까지 하는 명령어이다.

git pull = git fetch + git merge

 

 

시도 1

 

위 에러는 git pull 중 merge의 방식을 설정하라는 것 같았다.

각 옵션의 의미는 아래 링크를 참고하였고 명령어를 아래부터 하나씩 시도했다.

git pull 시 발생하는 warning 해결하기(Need to specify how to reconcile divergent branches)

git config pull.rebase false # rebase 후 pull
git config pull.rebase true # rebase 없이 pull
git config pull.ff only # fast-forward일 때만 pull 허용

* rebase

: 로컬 브랜치의 시작점을 원격 브랜치의 마지막 commit으로 옮기는 식

: git history 깔끔해질 있지만, 부주의하게 사용할 경우 별도의 알림 없이 git history 영구적으로 변경할 있기 때문에 ff-only 방식을 추천한다고 한다.

 

 

시도 2

위 명령어로 시도해도 해결되지 않았다. 당겨올 브랜치(dev)와 내 브랜치의 HEAD 차이가 많이 나면 안 될 수 있다.

따라서 로컬 dev 브랜치에서 새로 브랜치를 만들었다.

그 후 커밋했던 내역을 참고하여 하나하나 비교사항을 적용하고 커밋한 후에 원격 브랜치에 강제로 push했다.

git push origin feature/profile --force

이후엔 pull이 가능했다.

 

 

참고

pull 후에 브랜치를 바로바로 삭제하고 새 브랜치를 만들어서 작업하면 위와 같은 오류를 줄일 수 있다.

관련글 더보기

댓글 영역