TIL 20. git pull 시 발생하는 문제 해결하기

isk·2022년 11월 26일
0

TIL

목록 보기
20/122
post-custom-banner

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

git pull을 하려고 하면 pull 방식을 명시하라는 에러가 뜬다.
git pull은 git fetch와 merge를 합친 명령어이다. 그 중 merge의 방식을 명시하라는 에러.

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

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

두 브랜치가 fast-forward 관계라는 건 둘 중 하나를 의미한다.
두 브랜치가 갈라진 commit을 기준으로
[로컬저장소에만 새로운 commit이 있고, 원격저장소에는 없을 때.],
[원격저장소에만 새로운 commit이 있고, 로컬저장소에는 없을 때.]
첫번째 경우는 pull을 받아올 필요가 없으므로 두 번째의 경우에만 pull이 가능하다는 뜻이 된다.
그럼 만약 원격저장소의 새로운 commit이 존재하는데 git pull을 하지 않은 상태에서 로컬저장소에 새로운 commit을 했다면, git은 pull을 허용하지 않는다.

  • git pull --rebase

rebase란? 
결과적으로 git pull 과  git pull --rebase는 어떻게 사용하느냐에 따라 다르지만,
가장 큰 차이점은 이력을 전부 관리할 것인가 (pull) or 불필요한 이력은 필요없으므로 깔끔하게 이력을 관리할 것인가(pull --rebase)의 차이이다.

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

git history가 깔끔해진다는 장점이 있지만, 부주의하게 사용할 경우 별도의 알림 없이 git history를 영구적으로 변경할 수 있기 때문에 ff-only 방식을 더 추천한다고 한다.

git config pull.ff only 명령어를 사용해서 pull의 기본 값을 변경할 수 있다.

post-custom-banner

0개의 댓글