fetch
git fetch的作用是
- 把远程仓库的更新下载到本地
- 更新远程跟踪分支(如
origin/main) - 不会修改档期按工作区或本地分支
git fetch <远程名> <分支名>
例子
git fetch origin main
结果:
- 远程有新提交 -> 本地
origin/main更新 - 你的
main不会变
用法场景
想先看看远程改了什么,再决定怎么合并
git fetch origin main
git diff main origin/main
fetch的原理是从远程获取缺失对象,更新本地refs/remote/origin/xxx指针
常用参数
git fetch <remote>拉取指定远程仓库的更新
git fetch origin
--all获取所有远程仓库的更新
git fetch --all
--tags拉取所有远程仓库的标签
git fetch --tags
--prune删除远程仓库已删除的分支
git fetch --prune
--depth <depth>限制获取历史的深度,适用于获取较小的历史(浅克隆)
git fetch --depth 1 origin
--dry-run模拟拉取操作,不执行实际的拉取,只查看将会获取的内容
git fetch --dry-run
推荐协作习惯
- 拉取用
fetch+rebase而不是直接pull
git fetch origin
git rebase origin/main
这样提交历史更干净(避免多余的merge commit)
- 推送前先拉取