hoon's bLog

git ERROR | Need to specify how to reconcile divergent branches 본문

IT/Error

git ERROR | Need to specify how to reconcile divergent branches

개발한기발자 2023. 7. 23. 08:49
반응형

Error 발생 경로

fatal: Need to specify how to reconcile divergent branches.

직역하면 "서로 다른 분기를 조정하는 방법을 지정해야 한다." 라는 뜻으로,

git pull을 했을 때 pull 방식을 명시하라는 에러가 뜬다.

분기처리가 정상적으로 되지 않아, pull 옵션을 설정해야 하는 것으로 보인다.
git pull은 git fetch와 merge를 합친 명령어이다. 그중 merge의 방식을 명시하라는 에러인 것 같다.

해결

1. git pull --ff-only

pull 하려는 원격저장소(remote repository)의 branch와 로컬저장소의 브랜치가 fast-forward 관계일 때만 pull허용

  • 두 branch가 fast-forward 관계라는 건 둘 중 하나를 의미한다.
  • 두 branch가 갈라진 commit을 기준으로
    • 로컬저장소에만 새로운 commit이 있고, 원격저장소에는 없다.
    • 원격저장소에만 새로운 commit이 있고, 로컬저장소에는 없다.
  • 첫번째 경우는 pull을 받을 이유가 없으므로 두 번째의 경우에만 pull이 가능
  • 만약 원격저장소의 새로운 commit이 존재하는데 git pull을 하지 않은 상태에서 로컬저장소에 새로운 commit을 했다면, git은 pull을 허용하지 않을 것이다.

2. git pull --rebase

rebase란 새 branch가 시작된 분기점 commit이 존재한다. 이 분기점을 기준 브랜치의 가장 최근 commit으로 변경하는 작업.

  • 로컬 branch의 시작점을 원격 branch의 마지막 commit으로 옮기는 식으로, 그 과정에서 conflict가 발생할 경우 이를 해결해줘야 한다.
  • git history가 깔끔해진다는 장점이 있지만, 부주의하게 사용할 경우 별도의 알림 없이 git history를 영구적으로 변경할 수 있기 때문에 ff-only 방식을 더 추천한다고 한다.

따라서 필자는 merge 방식으로 --ff-only를 선택했고,

명령어로 git config pull.ff only를 사용하여, 정상적으로 merge 시켰다.

결론

git history는 협업 시 중요한 요소다.
만약, history 가 정리되어 있지 않다면 어느 순간에는 돌이킬 수 없는 상황이 발생할 수 있다.
즉, 이러한 상황을 막기 위해서 팀에 어떤 전략이 맞는지 확인해서 기본설정을 맞추거나,

git flow 정책을 세워 가져가면 더 나은 버전관리를 만들어 나갈 수 있을 거로 생각된다.

 

언제나 새로운 정보 공유와 잘못된 정보

비판/지적/태클은 환영입니다!

끝.

 

Reference

https://velog.io/@eunddodi/git-pull-%EC%8B%9C-%EB%B0%9C%EC%83%9D%ED%95%98%EB%8A%94-warning-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0Need-to-specify-how-to-reconcile-divergent-branches

 

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

각 옵션의 의미를 알아보고, 설정까지 해보자.

velog.io

 

728x90
반응형