728x90
반응형
git pull vs git fetch
원격 저장소의 브랜치를 로컬에 적용하기 위해 git pull 혹은 git fetch 를 사용할 수 있습니다.
git pull
- 원격 저장소에서 변경 사항을 가져오고, 자동으로 현재 로컬 브랜치에 병합합니다.
- 내부적으로 git fetch + git merge 를 한 번에 수행합니다.
예를들어 develop 브랜치에서 git pull origin main 을 실행할 경우 develop 브랜치에 origin/main 브랜치를 병합하게 됩니다.
git pull 을 통해 병합 커밋이 생성 될 경우 자동으로 Merge branch 'main' of <repository-url> into main 와 같은 커밋 메시지가 생성되며 자동으로 실행되는 커밋 메시지 수정창에서 커밋 메시지 수정 또한 원한다면 할 수 있습니다.
사용 예시는 아래와 같습니다.
git pull origin main # 작업중인 로컬 브랜치에 원격 저장소의 main 브랜치를 병합
git pull 은 git fetch 와 git merge 를 한 번에 수행하는 명령으로, 원격 브랜치에서 변경 사항을 가져오고 즉시 병합을 시도합니다. 병합 충돌이 발생하면 즉시 충돌을 해결해야 하며, 충돌을 해결하지 않으면 Git 에서 다른 작업을 진행할 수 없습니다. 특히 자동으로 병합을 수행하므로, 병합 방식 (merge vs rebase) 을 선택할 수 없습니다.
git fetch
- 로컬에 저장된 원격 추적 브랜치를 원격 브랜치의 최신 상태로 업데이트하는 명령어입니다.
- 가져온 변경 사항이 로컬 작업 브랜치에 병합되지는 않습니다.
- 원격 추적 브랜치는 단순히 원격 저장소의 상태를 로컬에서 참조하기 위한 목적입니다.
- 가져온 원격 추적 브랜치는 읽기 전용이므로 로컬에서 작업이 불가능하며 작업하려면 원격 추적 브랜치를 기준으로 로컬 브랜치를 만들어야 합니다.
원격 추적 브랜치를 기준으로 작업을 진행하기를 원한다면 예를들어 git switch -c some-branch origin/develop 과 같이 origin/develop 브랜치를 기준으로 some-branch 브랜치를 생성하여 작업을 진행합니다.
사용 예시는 아래와 같습니다.
git fetch origin main # 원격 저장소의 main 브랜치의 변경 사항이 로컬의 origin/main 브랜치로 반영
git merge origin/main # 작업중인 로컬 브랜치에 origin/main 브랜치를 병합
git fetch 는 원격 저장소에서 변경 사항만 가져오고, 병합은 나중에 할 수 있도록 해줍니다. 이 방식은 병합을 미루고 다른 일을 하다가 나중에 병합을 할 수 있게 해줍니다. git fetch 후 병합을 하게 되면 병합 실행 전까지 충돌을 확인하거나 병합 전략을 미리 생각할 시간을 가질 수 있습니다.
728x90
반응형
'Dev > VCS' 카테고리의 다른 글
Git 협업 방법 clone, fork (2) | 2024.12.17 |
---|---|
Git 원격 브랜치, 원격 추적 브랜치, 트래킹 브랜치 (4) | 2024.12.17 |
Git 스테이징 영역 (2) | 2024.12.13 |
Git 브랜치 전략 (4) | 2024.12.12 |
Conventional Commits (1) | 2024.12.10 |