git fetch 是 Git 版本控制系统中的一个重要命令,主要用于从远程仓库下载最新的提交信息、分支信息等,但不会自动合并到本地分支。下面为你详细介绍它的使用方法、常见场景和相关参数。

基本语法

git fetch [远程仓库名] [远程分支名]

常用参数

  • -p--prune:在从远程仓库获取最新信息后,删除本地已经不存在于远程仓库的分支引用。

  • -a--all:从所有的远程仓库中获取最新信息。

  • -v--verbose:显示详细的操作信息,包括下载的提交和文件等。

使用场景及示例

1. 从默认远程仓库(通常是 origin)获取所有分支的最新信息

git fetch origin
这个命令会从名为 origin 的远程仓库下载所有分支的最新提交信息到本地的 origin/* 分支,本地的工作分支不会有任何变化。

2. 从所有远程仓库获取最新信息

git fetch --all
如果你有多个远程仓库(例如 originupstream),使用这个命令可以一次性从所有远程仓库获取最新的提交信息。

3. 获取特定远程分支的最新信息

git fetch origin main
这个命令会从 origin 远程仓库下载 main 分支的最新提交信息到本地的 origin/main 分支。

4. 获取最新信息并删除本地已经不存在于远程仓库的分支引用

git fetch -p origin
当远程仓库删除了某些分支后,使用这个命令可以在获取最新信息的同时,删除本地对应的已经不存在于远程仓库的分支引用。

git pull 的区别

  • git fetch:只从远程仓库下载最新信息,不会自动合并到本地分支。你可以在下载后,使用 git mergegit rebase 手动将远程分支合并到本地分支。

  • git pull:相当于 git fetchgit merge 的组合操作,它会先从远程仓库下载最新信息,然后自动将远程分支合并到当前本地分支。

示例:手动合并 git fetch 下载的信息

# 从远程仓库获取最新信息
git fetch origin

# 查看本地分支和远程分支的差异
git log main..origin/main

# 将远程分支合并到本地分支
git merge origin/main

通过以上步骤,你可以更灵活地控制远程分支信息的合并过程。