git fetch命令:“把远程仓库的新内容拉到本地,但不改动你的代码。”
·
git fetch 是 Git 中一个安全、只读的命令,用于从远程仓库下载最新的提交、分支、标签等数据到本地,但不会自动合并或修改你当前的工作目录。
🧠 核心作用一句话:
“把远程仓库的新内容拉到本地,但不改动你的代码。”
🔍 详细解释
假设你和同事都在开发同一个项目,远程仓库(如 GitHub)上已经有新提交了。
- 执行
git fetch后:- Git 会连接远程仓库(如
origin); - 下载所有新的提交、分支、标签;
- 更新本地的远程跟踪分支(如
origin/main、origin/feature-x); - 但不会动你当前的分支(如
main)和工作区文件。
- Git 会连接远程仓库(如
📂 举个例子
# 查看当前本地分支
$ git branch
* main
# 查看远程跟踪分支(fetch 前)
$ git branch -r
origin/main # 假设是 commit A
# 远程仓库有人推送了新代码(commit B)
# 执行 fetch
$ git fetch origin
# 再看远程跟踪分支
$ git branch -r
origin/main # 现在指向 commit B ✅
# 但你的本地 main 分支仍停留在 commit A
$ git log --oneline -2
A ... (HEAD -> main)
此时你可以:
- 用
git diff main..origin/main查看差异; - 用
git merge origin/main或git rebase origin/main手动合并更新; - 或者直接切换到新分支:
git checkout -b feature origin/feature。
✅ git fetch vs git pull
| 命令 | 行为 | 是否安全 |
|---|---|---|
git fetch | 仅下载远程数据,不修改工作区 | ✅ 安全,可随时执行 |
git pull | = git fetch + git merge(自动合并) | ⚠️ 可能产生冲突,需谨慎 |
💡 建议:优先使用
git fetch+ 手动合并,更可控、更安全!
🛠 常用用法
# 获取所有远程分支的更新
git fetch
# 获取指定远程仓库的更新(如 origin)
git fetch origin
# 获取并清理已删除的远程分支(本地不再保留)
git fetch --prune
# 获取所有远程仓库(包括多个 remote)
git fetch --all
🎯 适用场景
- 想看看团队其他人有没有新提交;
- 准备合并前先检查变更内容;
- 在 CI/CD 脚本中安全地同步远程状态;
- 避免
git pull自动合并带来的意外冲突。
✅ 总结
git fetch= “悄悄看一眼远程有什么新东西,但不动我的代码。”
它是 Git 工作流中最安全、最推荐的同步方式之一。
更多推荐


所有评论(0)