git config pull.rebase false

홍성권·2022년 9월 9일
3

git rebase

목록 보기
1/2
post-thumbnail

오늘은 project를 진행해보면서 궁금했던 git pull을 할 떼 생기는 힌트 메세지에 대해 알아보겠다.(git pull 전략)

이해하기 쉽게 repo를 만들어서 테스트를 해보자.

준비물 : github ID, repository 아무거나 1개

나는 github에 요렇게 repo를 하나 만들어주었고 local에 clone을 받았다.

현재 readme파일에는

"git, github 관련 기능들 공부를 해 볼 repo입니다."라고 적혀있다.

나는 이제 local에서 readme.md 파일을 수정하도록 하겠다.

요렇게 파일을 수정하고 아직 add조차 안 한 상황. 이제 스테이징과 커밋을 완료해보자.

그리고 푸쉬하기 전! 프로젝트와 같은 상황을 연출하고자 한다. 내가 작업한 내용을 깃허브에 올리기 전 다른 사람이 먼저 올린 상황을 재현하고자 github에서 readme파일을 직접 수정했다.

그럼 이제 내 로컬에서 github에 푸쉬를 해보자. 그럼

이와 같은 에러 메세지가 나온다.

이는 내 로컬에서의 상황과 원격 repo, 즉 github에서의 상황이 다르기 때문에 push 할 수 없다고 에러를 띄워주는 것이다.
여기에 나온 힌트처럼 'git pull' 명령어를 통해 원격에 있는 상황을 로컬로 합쳐보자.

그럼 이와 같은 메세지를 볼 수 있다. 내가 궁금했던 내용, rebase에 대해 언급함을 알 수 있다.

3가지 경우가 있다.

git config pull.rebase false # merge(the default strategy)
git config pull.rebase true # rebase
git config pull.ff only # fast-forward only

merge, rebase, fast-forforward only

다음 pull 때는 요 3가지 중 하나를 적용시켜 하라는 거 같은데 우선 내가 프로젝트 때 사용했던 git config pull.rebase false를 먼저 적용시켜 보겠다. 나머지 2개는 다음 포스팅 때 알아보자.

우선 명령어 입력 후 다시 pull을 받아보면

자동 병합에 실패했다고 뜨고, 어디서 충돌이 일어나는지 각 상황을 보여준다.

이는 상대방이 나와 같은 파일을 작업한 후 github에 올렸을 때, 일어날 수 있는 상황으로 어떤 내용으로 수정해야 할 지 고친 후 commit을 해주어야 한다. 나는 두 라인 취소선 처리 후 새로운 문장을 추가하겠다.

요렇게 수정 후 add -> commit -> push 순으로 작업하면 github에는 2개의 커밋이 올라가게 된다.

  1. local에서의 수정 내용(현재는 local에서 readme 파일을 수정중입니다.)
  2. merge conflict 해결 내용(merge merge 얍얍!)

이렇게 push를 성공함으로써 로컬과, remote 상황이 동일해짐을 확인할 수 있었다.


오늘 테스트를 통해 생각해 볼 수 있는 부분은

git config pull.rebase false

이 명령어는 pull 명령을 실행했을 때 로컬과 원격 상황에 다름이 있을 경우 두 상황을 비교하여 merge하라는 환경설정을 한다는 것이다. 정확한 다른 선택지와의 차이점은 나머지 옵션을 실행해본 후 알 수 있을 것이다.

profile
개발 일기장

0개의 댓글