본문 바로가기

StackOverflow

[GIT] 'git pull' 과 'git fetch'의 차이가 뭐죠?

http://stackoverflow.com/questions/292357/what-are-the-differences-between-git-pull-and-git-fetch


Q: 'git pull' 과 'git fetch'의 차이가 뭐죠?

(질문자: Pablo)


A: 간단히 말하면, git pull git fetch 와 git merge를 함께 하는 것과 같습니다.

만약 당신이 remote tracking하고 있는 브랜치가 refs/remotes/<remote>/ 에 있다면, 이 'git fetch' 작업을 언제든 해도 됩니다. 이 작업은 당신의 로컬 브랜치에는 영향을 주지 않을겁니다 - 만약 로컬 브랜치가 /refs/heads 라면 말입니다. 이렇게 작업을 해도 당신의 작업중인 카피에는 변화가 없어 안전합니다. 제가 아는 사람은 git fetch를 주기적으로 백그라운드에서 cron job(주기적으로 스케쥴링되는 job) 수행시킨다더군요.

git pull은 당신의 로컬 브랜치를 리모트 버전에 업데이트 하고, 그 리모트 버전을 remote tracking 하고 있는 브랜치에 올리기 전에 이용하면 좋습니다. (역주: 댓글에서, 답변자는 원래 소스에 작성된 소스를 커밋 하기 전에 전체 소스를 한 번 pull 하여 merge를 하라는 의미라고 설명했습니다)


Git documentation: git pull

(답변자: Greg Hewgill)



-

What are the differences between git pull and git fetch?

shareeditflag





-

4521down voteaccepted

In the simplest terms, git pull does a git fetch followed by a git merge.

You can do a git fetch at any time to update your remote-tracking branches under refs/remotes/<remote>/. This operation never changes any of your own local branches under refs/heads, and is safe to do without changing your working copy. I have even heard of people running git fetch periodically in a cron job in the background (although I wouldn't recommend doing this).

git pull is what you would do to bring a local branch up-to-date with its remote version, while also updating your other remote-tracking branches.

Git documentation: git pull

shareeditflag