반응형
원격 저장소에 커밋하려고 했더니 터미널에 현재 브랜치와 '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 병합 옵션을 지정할 수 있다.
이렇게 하면 브랜치가 이력에 그대로 남아, 이 브랜치로 실행한 작업 확인 등이 가능하다.
반응형
'Tools > Git' 카테고리의 다른 글
reject -non-fast-forward 오류 (0) | 2019.06.07 |
---|---|
(스크랩) 완전 초보를 위한 깃허브 (0) | 2018.07.09 |
(스크랩)Git을 이용한 협업 워크플로우 배우기 (0) | 2018.07.06 |
(스크랩)Why is Git better than Subversion? (0) | 2018.02.06 |
(스크랩)Github를 이용하는 전체 흐름 이해하기 #2 (0) | 2018.02.06 |