내 잡다한 노트
Git fetch와 pull의 차이 본문
git fetch와 git pull은 둘 다 원격 저장소(Remote Repository)의 변경 사항을 가져오는 명령어이지만, 동작 방식과 목적이 다릅니다.
1. 기능 요약
git fetch
- 원격 저장소의 변경 사항을 로컬 저장소에 가져오기만 합니다.
- 로컬 브랜치에는 영향을 주지 않습니다.
- 예: 원격 브랜치와 로컬 브랜치 간의 변경 내역을 확인하거나 병합하기 전에 사용.
git pull
- 원격 저장소의 변경 사항을 가져오고, 로컬 브랜치에 병합까지 수행합니다.
- 사실상 git fetch + git merge를 한 번에 실행하는 명령어입니다.
2. 작업 흐름 차이
git fetch
- 원격 브랜치의 변경 사항을 가져옵니다.
- 원격 브랜치(origin/branch-name)에 반영됩니다.
- 로컬 브랜치는 그대로 유지되며, 병합 여부는 사용자가 결정합니다.
git pull
- 원격 브랜치의 변경 사항을 가져옵니다.
- 가져온 변경 사항을 로컬 브랜치에 자동으로 병합합니다.
3. 사용 예시
(1) git fetch
- 원격 저장소에서 변경 사항을 가져옵니다:
git fetch origin
- 이후, 원격 브랜치와 로컬 브랜치 간의 차이를 확인:
git log origin/main..main
- 필요하면 병합:
git merge origin/main
(2) git pull
- 원격 저장소의 변경 사항을 가져오고 병합:
git pull origin main
- 기본적으로 현재 체크아웃된 로컬 브랜치와 대응되는 원격 브랜치가 병합됩니다.
5. 어떤 상황에서 사용해야 할까?
git fetch를 사용하는 경우:
- 원격 저장소의 변경 사항을 가져오되, 로컬 브랜치에 영향을 주지 않으려는 경우.
- 병합 전에 변경 사항을 확인하고 싶을 때:
git fetch origin git diff origin/main
git pull을 사용하는 경우:
- 항상 원격 저장소의 최신 상태로 작업해야 할 때.
- 병합 자동화를 선호하는 경우.
git pull을 사용하게 되면 원하지 않는 변경 사항이 로컬 브랜치에 바로 적용될 수 있다. 주의해야한다.
그래서 현업에서는 주로 git fetch → 변경 사항 확인 → 필요시 병합 방식이 권장됩니다.
'Git' 카테고리의 다른 글
Git 브랜치 관리 전략 (0) | 2024.11.25 |
---|---|
Git Flow 전략 (0) | 2024.11.25 |
Git switch와 checkout의 차이 (0) | 2024.11.25 |
Git 자주 쓰이는 명령어 정리 (0) | 2024.11.25 |
Git을 현업에서 사용할 때 보통 어떤 식으로 이루어질까? (0) | 2024.11.25 |