깃(Git) Pull 과 Fetch 의 차이점

Pull vs Fetch

Pull = Fetch + Merge

Git Fetch 이후 상태

1
2
3
4
5
6
7
8
9
10
11
12
13
$ git fetch origin main

$ git log --decorate -5 --oneline
70e223a (origin/main, origin/HEAD) modified open graph type
1b156f7 modified manifest
2540a5a (HEAD -> main) Add post html5 game
4ff029b Add post hexo tag plugin
b9ca990 modified post

$ git status
On branch main
Your branch is behind 'origin/main' by 2 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)

fetch 이후에 git 상태를 확인해보면 local branch 가 2개 이전의 commit 상태라고 나온다

여기서 merge 를 해주면 Git pull 과 동일한 상태가 된다

1
2
3
4
5
6
7
$ git merge origin/main

Updating 2540a5a..70e223a
Fast-forward

3 files changed, 50 insertions(+), 10 deletions(-)
create mode 100644 source/_post/nodejs-luxon-how-to-use.md

Git Pull 이후 상태

Git pull 은 한방에 fetch 와 merge 를 해준다

1
2
3
4
5
6
7
8
$ git pull origin main

$ git log --decorate -5 --oneline
70e223a (HEAD -> main, origin/main, origin/HEAD) modified open graph type
1b156f7 modified manifest
2540a5a Add post html5 game
4ff029b Add post hexo tag plugin
b9ca990 modified post

결론

신중하게 원격 소스를 가져올 경우는 fetch
이외에는 pull 이 편하다