Suno

git pull 시 발생하는 warning 해결하기 본문

항해99/오류해결

git pull 시 발생하는 warning 해결하기

vlfxhd15 2023. 4. 17. 15:30

git push 를 하려했는데 원격저장소에서 commit 변경사항이 생겨서 pull을 받아야 한다는 메세지가 떴다.

그래서 pull을 받으려 했으나 에러 메세지가 뜨면서 pull이 진행되지 않았다.

여러 블로그글들을 찾아보면서 해결방법을 알아냈다. 

 


먼저 git pull 은 git feach와 merge를 합친 명령어이다.

그 중 merge의 방식을 명시하라는 에러인 것 같다. 각 옵션의 의미를 알아보고, 설정을 해보자.

 

기존 pull 방식

기존 pull의 경우, pull을 받으면 불필요한 merge commit이 생성된다.

마치 3-way merge와 같은 모양새이다.

(아래 그림에서의 빨간색 commit이 바로 불필요한 merge commit이다.)

 

이 방식이 세 가지 옵션 중 첫번째에 해당된다.

 

git pull --f-only

pull 하려는 원격저장소의 브랜치와 로컬저장소의 브랜치가 fast-forward 관계일 때만 pull을 허용한다.

두 브랜치가 fast-forward 관계라는 건 둘중 하나를 의미한다.

 

두브랜치가 갈라진 commit을 기준으로

- 로컬저장소에만 새로운 commit이 있고, 원격저장소에는 없는 경우

- 원격저장소에만 새로운 commit 있고, 로컬저장소에는 없는 경우

 

첫번째 경우 pull을 받아올 필요가 없으므로 두 번째의 경우에만 Pull이 가능하다는 뜻이다.

그럼 만약 원격저장소의 새로운 commit이 존재하는데 git pull을 하지 않은 상태에서 로컬저장소에

새로운 commit을 했다면, git pull을 허용하지 않을 것이다.

 

 

나의 상황

git pull --f-only를 해보았는데도 해결이 되지 않았다.

원격저장소에서 commit을 한 후에 git pull을 하지 않은 상태에서 로컬저장소에서 새로운 commit을 한 상황이다.

그래서 git pull이 되지 않는 상황.

git pull --rebase를 통해 해결하였다.

 

git pull --rebase

pull 시에 rebase를 사용하면 아래와 같이 동작한다.

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

 

- 로컬 브랜치의 시작점을 원격 브랜치의 마지막 commit으로 옮기는 식.

   그 과정에서 conflict가 발생할 경우 이를 해결해줘야 함

- git history가 깔끔해지는 장점, 하지만 부주의할 경우 별도의 알림 없이 git history가 영구적으로 변경될 수 있다.

 

 

 

 

참고블로그

 

 

 

Git Pull실행시 Not possible to fast-forward 오류가 발생했을 경우의 대응

- git pull를 실행했을 때 Not possible to fast-forward, aborting라고 에러발생으로 로컬 원격 저장소와 동기화 할 수없는 경우의 대응 방법입니다. ​ - 원인 원격 저장소를 업데이트 한 후 git pull (= git fetch;

itiformation.tistory.com

 

 

 

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

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

velog.io

 

 

 

'항해99 > 오류해결' 카테고리의 다른 글

암호화(bcrypt, AES256)  (0) 2022.12.21
12/15 (리액트 심화주차 - comment 최종수정)  (0) 2022.12.16