版主注:鉴于这个问题已经有个答案贴在上面(其中一些已经被删除),请考虑你是否**贡献了任何新的东西,然后再贴一个。
git pull'和
git fetch'之间有什么区别?
最简单地说,git pull'做了一个
git fetch',然后是`git merge'。
你可以在任何时候进行git fetch
,以更新你在refs/remotes/<remote>/
下的远程跟踪分支。
这个操作不会改变你在refs/heads
下的任何本地分支,而且是安全的,不会改变你的工作副本。我甚至听说有人在后台的cron工作中定期运行git fetch
(尽管我不建议这样做)。
git pull
是让本地分支与远程版本保持同步,同时更新其他远程跟踪的分支。
Git文档 - git pull:
在其默认模式下,
git pull
是git fetch
和git merge FETCH_HEAD
的缩写。
`git fetch'的一个用例是,下面会告诉你自上次拉取后远程分支的任何变化......所以你可以在做实际拉取前检查,这可能会改变你当前分支和工作副本中的文件。
git fetch
git diff ...origin
参见:https://git-scm.com/docs/git-diff 关于diff命令中双点和三点的语法
git-pull - 从另一个版本库或本地分支获取并与之合并 说明git pull
... 描述 用给定的参数运行git-fetch,并调用git-merge来合并 合并到当前分支中。使用 --rebase,调用 git-rebase 而不是 git-merge。
注意,你可以用 .(当前目录)作为
来拉动 从本地仓库拉取 - 这在将本地分支合并到 合并到当前分支时非常有用。 还要注意的是,为git-pull本身和基础的git-merge 的选项必须在git-fetch的选项之前给出。
如果你想合并历史,你就会去拉,如果你只是想获得代码,你就会去取,就像有些人在这里给一些文章贴的标签一样。