[TOC] #### 1. 前言 ---- git fetch 命令用于将远程库更新到本地 当远程库中有了新的提交记录、分支、标签时,可以使用这个命令将远程库中的更新拉取到本地库;但是远程库中的删除标签、删除分支操作比较特殊,怎么个特殊法,查看本文下面内容即可 `git fetch` 也许你不太熟悉,但是你一定知道 `git pull`,其实 `git pull` 是下面两个命令的合集 ``` git fetch # 假设当前在 master 分支 git merge origin/master ``` #### 2. 远程库标签的更新 ---- 在远程库中增加新的标签后,使用以下命令,可以将标签的更新操作拉取到本地库 ``` git fetch ``` 但是,在远程库中删除标签,无法将这个删除操作拉取到本地库的,需要手动将本地的标签删除 ``` git tag -d <tagname> ``` 我推荐使用命令删除标签 ``` # 删除本地标签 git tag -d <tagname> # 删除远程库标签 git push -d origin <tagname> ``` #### 3. 远程库分支的更新 ---- 当远程库中出现了新的分支或者提交记录,使用以下命令,可以将远程库中的更新拉取到本地库 ``` git fetch ``` ![](https://img.itqaq.com/art/content/5e238f2be937ccc7d01607c7974050ba.png) 但是,在远程库中删除分支后,然后在本地使用 `git fetch` 拉取,此时在本地查看远程分支时还能看到删除的分支 ``` git fetch git branch -r ``` ![](https://img.itqaq.com/art/content/307df691ab0da0b587cd84b73173ded8.png) 此时,我们可以看到执行下面这个命令查看下远程库信息以其和本地库的关系 ``` git remote show origin ``` ![](https://img.itqaq.com/art/content/1c943363c1621b41be5244b88adc6cc5.png) 通过上图提示我们看到:可以使用下面命令移除本地的 `origin/dev` ``` git remote prune origin ``` 其实也可以使用下面这个命令移除本地的 `origin/dev` ``` git fetch --prune ``` ![](https://img.itqaq.com/art/content/5abbdb3c8cfb3fa28c6ff42610f909aa.png) 综上所述,我推荐使用命令删除远程库中的分支 ``` # 删除已经签出到本地的分支 git branch -d origin <branch> # 删除本地的 origin/<branch> 和远程库中的分支 git push -d origin <branch> ```