这两个命令使用的频率还是挺高的,日常开发中,优先用git fetch获取远程状态,再用git diff或git log查看变化,确认无误后再执行git merge或git rebase。这种方式更安全,避免"一键pull"带来的意外冲突或覆盖。下面是它们的区别:
git fetch 会更新位于 refs/remotes/<remote>/ 下的远程跟踪分支。git fetch可以在任何时候安全地运行,因为它永远不会更改你本地位于 refs/heads/ 下的任何分支。
git pull 会将本地分支更新到其远程版本的最新状态,同时也会更新你的其他远程跟踪分支。
根据 Git 官方文档中对 git pull 的描述:
git pull 会运行带有指定参数的 git fetch,然后根据配置选项或命令行标志,调用 git rebase 或 git merge 来合并分叉的分支。
可以简单理解git pull等于“git fetch + git merge”。