• `git fetch` 和 `git remote update origin --prune` 的区别(以及跟`git pull` 的区别)


    git fetchgit remote update origin --prune 的区别

    • git fetch 拉取分支,远程被删除的分支不会同步删除本地origin的分支(origin/xxxx)

      比如你有个本地分支feat,然后也有本地origin/feat,假设remote新增了test分支且其他人删除了remote的feat

      则git fetch可以在本地产生origin/test(但没有本地分支test,这个要你checkout到test的时候才会产生),但不会删除本地的origin/feat

    • git update origin --prune:必须带有–prune,否则跟git fetch等价。除了会拉取新分支,还会删除掉别人远程删除的分支

      按上面的例子,执行这个命令后可以拉取origin/test(但没有本地分支test),且删除本地的origin/feat(但不会删除你本地的分支feat)

    其实通过上面可能你隐约可以感觉到分支好像有三个地方:第一个是local,一般名字如 test;第二个比较让人疑惑,是origin/test 这个是你本地的;第三个是remote的即远程的分支,即仓库上的分支,这个不知道怎么表达,或者可以写作 remotes/origin/test 来表达这个分支?

    第二个最难理解,可以多思考多动手多理解。

    补充:

    1、git remote update origin --prune 可以不要 --prune 参数吗?不行!!!,如果不加则跟git fetch是一样的效果,即新增加的分支能fetch下来,但是被删掉的分支却不能同步删掉本地的origin的

    2、顺便说下 git fetch 和 git pull 的区别,git pull 包含 git fetch和git merge,这里是git merge不是说不同分支名的那个合并,是同分支名的,比如test分支,执行git pull后得到本地最新的origin/test,然后merge到本地的test分支,其实类似于执行 git merge origin/test 把?!

  • 相关阅读:
    产品思维训练 | 搜索和信息流的核心差异是什么?
    百万买手,小红书电商商业化之锚
    【面试题精讲】什么是websocket?如何与前端通信?
    216. 组合总和 III
    山东大学软件学院深度学习期末回忆版
    【PG】PostgreSQL13主从流复制部署(详细可用)
    修改克隆虚拟机的静态ip地址
    最新数据挖掘赛事方案梳理!
    Netty 学习(一):服务端启动 & 客户端启动
    简单介绍一下RAM、ROM 通用安全机制
  • 原文地址:https://blog.csdn.net/w8y56f/article/details/126726708