[GIT] Git 원격 저장소와의 동기화: clone, push, fetch, pull 개념 정리
Git을 사용하여 협업하거나 GitHub에 코드를 올리고 받아오는 과정에서 가장 자주 사용하는 명령어가 clone, push, fetch, pull입니다.
이 글에서는 각 명령어가 의미하는 바와 상황에 따라 어떻게 사용하는지를 쉽게 정리해 보았습니다.
1. clone (클론)
clone은 원격 저장소(repository)를 그대로 내 로컬 컴퓨터에 복사해오는 작업을 말합니다. GitHub, GitLab 등에 있는 프로젝트를 처음 내려받을 때 사용하는 명령어입니다.
git clone 원격저장소URL
예시:
git clone https://github.com/username/project.git
이 명령어를 실행하면 프로젝트 폴더가 생성되고, 해당 저장소의 .git까지 포함된 완전한 로컬 저장소가 만들어집니다.
2. push (푸시)
push는 로컬 저장소에서 작업한 변경 사항을 원격 저장소에 반영(업로드)하는 명령어입니다. commit으로 로컬에 저장한 내용을 원격 저장소에 보내야 다른 사람도 확인하고 협업이 가능합니다.
git push origin 브랜치이름
예시:
git push origin main
origin은 원격 저장소의 기본 이름이며, main은 푸시할 브랜치 이름입니다. 커밋을 하고 난 후에만 push가 가능하며, 변경 사항을 공유할 때 반드시 사용합니다.
3. fetch (패치)
fetch는 원격 저장소의 변경 사항을 로컬 저장소로 "가져오기만" 하는 명령어입니다. 아직 로컬 작업 내용과 병합하지 않고, 최신 원격 상태만 확인할 수 있습니다.
git fetch origin
fetch는 원격 저장소의 상태를 확인하고, 내가 직접 병합할지 말지를 선택할 수 있는 여유를 제공합니다.
* fetch와 patch는 발음이 유사하지만 전혀 다른 개념입니다. patch는 소스코드의 버그 수정이나 소규모 기능 추가를 의미하는 일반 소프트웨어 용어이고, fetch는 Git에서 사용하는 버전 동기화 기능입니다.
4. pull (풀)
pull은 fetch와 merge를 한 번에 처리하는 명령어입니다. 즉, **원격 저장소의 변경 사항을 가져오고(fetched), 내 로컬 작업에 자동으로 병합(merged)**해주는 기능입니다.
git pull origin 브랜치이름
예시:
git pull origin main
협업할 때 다른 사람의 작업 내용을 바로 반영하고 싶을 때 주로 사용하며, 로컬에서 작업하기 전 꼭 한 번씩 실행하는 것이 좋습니다.
5. 네 가지 개념 요약
명령어 | 의미 | 주요 사용 시점 |
clone | 원격 저장소를 내 컴퓨터로 복제 | 프로젝트 처음 시작 시 |
push | 로컬 변경사항을 원격으로 업로드 | commit 후 협업자와 공유할 때 |
fetch | 원격 변경사항을 로컬로 가져오기만 함 | 병합 전 최신 정보 확인 시 |
pull | fetch + merge | 로컬과 원격을 즉시 동기화할 때 |
6. 마무리하며
Git에서 clone, push, fetch, pull은 협업의 시작과 끝을 책임지는 핵심 명령어입니다. 이 개념들만 제대로 이해해도 GitHub를 사용하는 대부분의 협업 상황에서 충분히 대응할 수 있습니다.