Git pull vs Git Fetch 차이점 완벽 분석하기

Git Logo
Git

git pull, git fetch가 뭐야?

Git이란 무엇인가?

Git은 코드의 변경을 추적하고 여러 사람들과 협력하기 위한 분산 버전 관리 시스템입니다.

git pull과 git fetch의 필요성

git pullgit fetch 는 개발 할 때 정말 많이 사용 하는 git 명령어 중 하나입니다. 둘의 차이를 한 마디로 요약하자면 merge(Merge에 대해 알아보기)를 하는지 안하는지로 구분할 수 있습니다. 이번 글을 통해서 pullfetch의 차이에 대해서 명확히 이해할 수 있게 도와드리겠습니다.

git pull 파헤치기

작동 원리

git pull 명령어는 원격 저장소의 변경 사항을 로컬 저장소로 가져와 자동으로 merge합니다.

명령어 구성

git pull [<options>] [<repository> [<refspec>…​]]
git pull 명령어 구성

명령어 예시

git pull origin master
git pull 명령어 예시

이처럼 명령을 내릴 수 있습니다. 이 명령어는 origin 으로 등록된 원격 저장소의 최신 변경사항을 로컬 저장소로 병합(Merge)하는 명령어 입니다.

초보도 쉽게 이해하는 git merge 완벽 정리
git merge의 필요성 개발 프로젝트에서 팀원들과 협업하며 일하다 보면 다양한 버전의 코드를 효율적으로 관리해야 하는 상황이 자주 발생합니다. 바로 이때, git merge가 빛을 발합니다. 이 아티클에서는 git merge의 개념과 사용법을 초보자도 쉽게 이해할 수 있도록 구체적으로 설명하겠습니다. 어렵게 느껴질 수 있는 병합 과정도 한 단계씩 따라가면 어렵지 않게 익힐 수

다음과 같은 결과값이 나오게 됩니다.

remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://github.com/user/repo
 * branch            master     -> FETCH_HEAD
Updating e2c34d5..5f7e8e1
Fast-forward
 file.txt | 2 ++
 1 file changed, 2 insertions(+)
git pull 터미널 결과값

git pull 순서도

graph TD; A[git pull 명령어 입력] --> B[원격 저장소 연결 확인]; B -->|성공| C[원격 브랜치 변경사항 조회]; B -->|실패| X[에러 출력 및 종료]; C -->|변경사항 있음| D[변경사항 로컬로 가져오기]; C -->|변경사항 없음| Y[작업 완료]; D --> E[로컬과 원격 병합 가능한가?]; E -->|가능| F[자동 병합]; E -->|불가능| Z[병합 충돌 에러 및 종료]; F --> G[병합 완료 및 작업 종료];

git fetch 파헤치기

작동 원리

git fetch 명령어는 원격 저장소의 최신 변경사항을 로컬 저장소로 가져오기만 하는 명령어입니다. git pull 과 달리 merge 를 하지 않습니다.

명령어 구성

git fetch [<options>] [<repository> [<refspec>…​]]
git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)…​]
git fetch --all [<options>]
git fetch 터미널 결과값

명령어 예시

git fetch origin master
git fetch 명령어 예시

이처럼 명령을 내릴 수 있습니다. 이 명령어는 origin 으로 등록된 원격 저장소의 최신 변경사항을 임시로 생성된 브랜치에 저장합니다.

*임시로 생성된 브랜치
로컬 저장소 중 원격 추적 브랜치(remote tracking branch)에 반영이 됩니다. 가져온 모든 브랜치의 헤드를 .git/FETCH_HEAD 파일에 기록하게 됩니다.

이 명령어는 또한 다음과 같은 결과값이 나오게 됩니다.

remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://github.com/user/repo
 * branch            master     -> FETCH_HEAD
git fetch 터미널 결과값

git fetch 순서도

graph TD; A[git fetch 명령어 입력] --> B[원격 저장소 연결 확인]; B -->|성공| C[원격 브랜치 변경사항 조회]; B -->|실패| X[에러 출력 및 종료]; C -->|변경사항 있음| D[변경사항 FETCH_HEAD로 가져오기]; C -->|변경사항 없음| Y[작업 완료]; D --> E[Fetch 완료 및 작업 종료];

마치며

함께 읽으면 좋은 글

XSS, CSRF 차이점 완벽하게 이해하기: XSS, CSRF 차이
들어가며 웹 개발과 관련하여, 신입들이 저지르는 가장 흔한 실수 중 하나는 보안의 중요성을 과소평가하는 것입니다. 많은 개발자들은 특징과 사용자 경험 그리고 성능을 우선시하며, 종종 보안이 문제가 될 때까지 경시합니다. 물론 저도 그랬구요. 하지만 이것만큼 중요한 것은 제품의 기본적인 보안입니다. 🥹 보안 조치를 무시하는 것은 무책임할 뿐만 아니라 위험합니다. 무시하면 데이터 침해,
초보도 쉽게 이해하는 git branch 개념 이해하기
서론 당신은 프로젝트를 진행하며 새로운 기능을 추가하고 싶을 수 있습니다. 그런데 이 기능 추가로 인해 기존의 안정된 코드에 문제가 생기면 어떡할까요? 여기서 git branch가 필요합니다. Branch는 마치 나무의 가지처럼, 프로젝트의 메인 줄기에서 뻗어 나가는 독립된 공간입니다. 이런 branch를 이용하면, 기존 코드에 영향을 주지 않고 새로운 기능을 안전하게 개발할 수 있어요.
git rebase 3분 안에 이해하기
서론 안녕하세요 ! 이번에는 git의 핵심 중 하나인 rebase에 대해 깊게 다뤄볼 것입니다. 이 포스트를 통해 rebase와 관련된 기본부터 고급 기술까지 모두 파악하실 수 있을 거에요. 1. git rebase의 기본 개념 먼저, rebase는 무엇인가요? rebase는 글자 그대로 ‘다시 기반을 다지다’라는 뜻입니다. git에서는 두 가지 브랜치의 기반을 다시 다져주는 역할을 합니다. 다음과