본문 바로가기
개발 도구/형상관리

[Git] 현재 브랜치와 갈라졌습니다. 이슈 해결법

by 뒹굴거리는프로도 2023. 1. 13.
반응형

원격 저장소에 커밋하려고 했더니 터미널에 현재 브랜치와 'origin/main'이(가) 갈라졌습니다. 라는 메시지가 떴다.

$ git commit

 

#결과 메시지

현재 브랜치 main

현재 브랜치와 'origin/main'이(가) 갈라졌습니다,
다른 커밋이 각각 1개와 7개 있습니다.
(리모트의 브랜치를 현재 브랜치로 병합하려면 "git pull"을 사용하십시오)

 

메시지가 시키는 대로 git pull을 했더니 정방향이 불가능하므로, 중지합니다.라는 에러가 뜬다.
여기서 ff(fast forward)란 두 개의 브랜치 히스토리가 같은 상태라고 생각하고 병합하는 방법이다.
에러 메시지가 뜬 것을 보니, ff 는 할 수 없다.
관련해서 추가 설명은 마지막 하단에 적어 두겠다.

$ git pull --ff-only

 

#결과 메시지

fatal: 정방향이 불가능하므로, 중지합니다.

 

브랜치 병합을 위한 merge와 rebase 방법이 있다. 나는 혼자 개발 중이니 rebase를 사용한다.

$ git pull --rebase

 

#결과 메시지

Successfully rebased and updated refs/heads/main.

 


*fast forward 관계에 대한 추가 설명

기존 브랜치와 분기한 브랜치의 관계. 분기한 브랜치의 커밋 히스토리가, 기존 브랜치의 커밋 히스토리를 포함하고 있는가?
그렇다면 fast forward (빠른 병합)이 가능하다
ff를 할 때 별다른 옵션 없이 두 브랜치를 merge 하면, merge commit(병합 커밋)은 만들어지지 않고 head의 위치만 변한다.


ff 병합이 가능한 경우라도, non fast-forward 병합 옵션을 지정할 수 있다.
이렇게 하면 브랜치가 이력에 그대로 남아, 이 브랜치로 실행한 작업 확인 등이 가능하다.


 

반응형