Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 명령어
- GoingBus
- 코테
- Linux
- 프로그래머스
- 백준 javascript
- java 백준 1차원 배열
- 자바스크립트 코딩의 기술
- map
- 문자열
- Java
- 리눅스
- 코딩테스트
- 연습문제
- 리눅스마스터 3과목
- 백준 java
- Memoir
- Kotlin
- 월간코드챌린지
- 자바
- 스프링 컨테이너
- toCharArray
- 개발자 회고록
- 리눅스마스터 1급 정리
- 반복문
- 리눅스마스터1급
- JavaScript
- 스프링 빈
- 카카오
- 고잉버스
Archives
- Today
- Total
hoon's bLog
git ERROR | Need to specify how to reconcile divergent branches 본문
반응형
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
728x90
반응형