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 후에 브랜치를 바로바로 삭제하고 새 브랜치를 만들어서 작업하면 위와 같은 오류를 줄일 수 있다.
[ERROR] FirebaseError: Firebase: (auth/unauthorized-domain). (0) | 2023.07.04 |
---|---|
[Git] .env 깃허브에 잘못 올렸을 때 commit history까지 삭제하기 (0) | 2023.07.03 |
LocalStorage (0) | 2023.06.27 |
[News feed Team Project ] S.A. 작성 (0) | 2023.06.26 |
리액트 숙련 - Redux (0) | 2023.06.22 |
댓글 영역