pull 오류 : need to specify how to reconcile them 해결 방법
오류 내용
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.
이 오류는 내가 지금 로컬에서 갖고 있는 파일과 pull 받으려는 브랜치의 파일이 달라서 충돌을 해결해야 하는데, 어떤 방식으로 해결해야 하는지 정해지지 않았으니, 정하라는 이야기이다.
병합 충돌 방식을 정하고 나서 그 방식으로 pull 하겠다는 이야기이다.
해결 방법
힌트에서는 merge, rebase, fast-forward only 세 가지 방식 중 선택하라고 나온다.
- merge : 기본 병합 방식으로 현재 브랜치에 병합 커밋을 생성하여 변경 사항을 병합한다.
- rebase : 현재 브랜치의 변경 사항을 리베이스하여 병합 커밋 없이 깔끔하게 병합한다.
- fast-forward only : 만약 현재 브랜치가 원격 브랜치의 부모 커밋이면, fast-forward 병합을 수행한다. 그렇지 않으면 병합을 거부한다.merge
merge (권장)
git config pull.rebase false
rabase
git config pull.rebase true
fast-forward only
git config pull.ff only
위 명령어는 이 리포지토리에서만 실행하겠다는 명령어이고, 다른 프로젝트를 하면 또 이런 에러가 발생하는 게 싫다면, 전역 설정으로 기본 설정을 정할 수도 있다.
앞에 --global을 붙이면 된다.
// merge 방식 예제
git config --global pull.rebase false
각 병합 방식에 대한 이해
다소 헷갈리는 개념일 수 있다. 예시를 보면 이해가 빠르다.
이게 병합 커밋이다. 병합 충돌 해결 후 남는 메시지인데, 커밋 로그가 복잡해질 수 있지만 추후 어디서 잘못되었는지 추척해 나가거나 할 때 실마리를 제공해줄 수 있기 때문에 권장된다.
'Programing > Git' 카테고리의 다른 글
실수로 GitHub에 올려버린 .env 지우기 (0) | 2024.06.29 |
---|---|
변경사항 없이 강제 push 필요한 경우 (0) | 2024.06.27 |
a 브랜치와 b 브랜치 합치기 (0) | 2024.06.18 |
로컬에서 브랜치 생성, 삭제하기 (0) | 2024.06.17 |
Mac에서 push 할 때 생성되는 .DS_Store 앞으로 계속 업로드 제외시키기 (0) | 2024.05.17 |
댓글