Git 명령어
IT위키
더 많은 작업
Git 명령어는 분산 버전 관리 시스템 Git에서 저장소를 만들고, 변경을 기록하고, 원격 저장소와 주고받고, 브랜치를 다루는 데 쓰는 명령들이다.
Git 은 내 컴퓨터의 로컬 저장소와 GitHub 같은 서버의 원격 저장소를 따로 둔다. 변경은 먼저 작업 디렉터리에서 스테이징 영역(index)으로 올리고(add), 로컬 저장소에 기록한(commit) 뒤, 원격 저장소로 올린다(push). 다른 사람이 원격 저장소에 올린 변경은 내려받기만 하거나(fetch) 내려받아 바로 병합한다(pull). 어떤 명령이 로컬에서만 일어나고 어떤 명령이 원격과 통신하는지 구별하는 것이 핵심이다.
| 명령 | 하는 일 | 방향 |
|---|---|---|
git clone <URL> |
원격 저장소 전체(모든 커밋 이력과 브랜치)를 새 디렉터리에 복제하고, 원격 추적 브랜치를 만든 뒤 기본 브랜치를 체크아웃한다[1] | 원격 → 로컬(처음 한 번) |
git push |
로컬 저장소의 커밋을 원격 저장소의 브랜치에 반영한다 | 로컬 → 원격 |
git fetch |
원격 저장소의 새 커밋과 참조를 내려받아 원격 추적 브랜치(origin/main 등)만 갱신한다. 내 작업 브랜치와 작업 디렉터리는 바꾸지 않는다(병합하지 않는다)[2] | 원격 → 로컬 |
git pull |
fetch 를 실행한 뒤 이어서 가져온 브랜치를 현재 브랜치에 병합(기본값 merge, 설정이나 --rebase 로 rebase)한다. 즉 pull = fetch + merge[3] |
원격 → 로컬 |
git init- 현재 디렉터리를 새 Git 저장소로 만든다git status- 작업 디렉터리와 스테이징 영역의 상태를 본다git add <파일>- 변경을 스테이징 영역에 올린다git commit -m "메시지"- 스테이징된 변경을 로컬 저장소에 하나의 커밋으로 기록한다. 원격 저장소와는 통신하지 않는다git log- 커밋 이력을 본다git diff- 아직 커밋하지 않은 변경 내용을 본다
git branch- 브랜치 목록을 보거나 새 브랜치를 만든다git checkout <브랜치>,git switch <브랜치>- 작업할 브랜치로 옮긴다 → Git checkoutgit merge <브랜치>- 다른 브랜치의 변경을 현재 브랜치에 합친다 → Git mergegit rebase <브랜치>- 현재 브랜치의 커밋을 다른 브랜치 끝으로 옮겨 다시 쌓는다git stash- 하던 작업을 커밋하지 않고 임시로 치워 두었다가git stash pop으로 되살린다
pull 을 merge 대신 rebase 로 수행한다. 원격에서 가져온 커밋 위에 내 로컬 커밋을 다시 쌓으므로 병합 커밋이 생기지 않고 이력이 한 줄로 남는다.[3]
| 구분 | git fetch | git pull |
|---|---|---|
| 원격 변경 내려받기 | 한다 | 한다 |
| 현재 브랜치에 병합 | 하지 않는다 | 한다(merge 또는 rebase) |
| 작업 디렉터리 변화 | 없다 | 있다. 충돌이 나면 해결해야 한다 |
| 쓰는 때 | 병합 전에 원격 변경을 먼저 살펴볼 때 | 원격 변경을 바로 내 브랜치에 반영할 때 |
commit 은 로컬 저장소에 기록할 뿐이어서 네트워크 없이도 된다. 다른 사람이 볼 수 있게 원격 저장소에 반영하는 것은 push 이다. 중앙집중형 버전 관리 시스템(SVN)에서는 commit 이 곧 서버 반영이지만, Git 에서는 commit 과 push 가 나뉜다.
- ↑ 「git-clone Documentation」, Git, https://git-scm.com/docs/git-clone, 확인일: 2026-11-04.
- ↑ 「git-fetch Documentation」, Git, https://git-scm.com/docs/git-fetch, 확인일: 2026-11-04.
- ↑ 3.0 3.1 「git-pull Documentation」, Git, https://git-scm.com/docs/git-pull, 확인일: 2026-11-04.
Git에 대한 기본 개념은 Git 문서 확인