일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ReactS.A과제
- VirtualDOM
- 댓글오류수정
- 쿠키/웹스토리지
- Maxage
- JS역사
- 순수함수
- 중간멘토링
- 1주차마무리
- mypage
- 부트스트랩컴포넌트5.0
- categoryCRUD
- React상세페이지오류
- flow차트
- 엄청오래걸림
- 브라우저 렌더링과정
- 결국&&로해결
- 별피라미드
- 깃허브 액션
- cache(캐시)
- HTML
- 자바스크립트런타임
- gitpull
- 주특기첫날
- CSS
- JSX key
- 미니프로젝트
- REACT-CSS
- 실전첫WIL
- useRef
- Today
- Total
Suno
git pull 시 발생하는 warning 해결하기 본문
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 |