git - 我看到不存在的远程分支,在这种情况下 git remote prune origin 会做什么?
问题描述
我愿意:
$ git branch -a
feature/XXX-5793
feature/XXX-6864
feature/XXX-7534
feature/XXX-9067
feature/XXX-9204
* master
remotes/origin/HEAD -> origin/master
remotes/origin/feature/BIOVK-13
remotes/origin/feature/XXX-11313
remotes/origin/feature/XXX-11481
remotes/origin/feature/XXX-3311
remotes/origin/feature/XXX-5793
remotes/origin/feature/XXX-6448
remotes/origin/feature/XXX-7237
remotes/origin/feature/XXX-7534
remotes/origin/feature/XXX-9067
remotes/origin/feature/XXX-9204
remotes/origin/master
我的第一个问题是:在 remotes/origin 列表中有一些分支不再在我们的 bitbucket 服务器上。这个怎么可能?
在此之后我做了:
$ git remote prune origin
Pruning origin
URL: ...
* [pruned] origin/feature/XXX-11481
* [pruned] origin/feature/XXX-3311
* [pruned] origin/feature/XXX-5793
* [pruned] origin/feature/XXX-6448
* [pruned] origin/feature/XXX-7237
* [pruned] origin/feature/XXX-9067
* [pruned] origin/feature/XXX-9204
我的第二个问题是:我想: git remote prune origin 删除了不再存在的远程本地分支。但是在这里我的远程分支列表被清除了。
后来我用 git branch -d 去掉了本地分支,结果变成了:
$ git branch -a
feature/XXX-7534
* master
remotes/origin/HEAD -> origin/master
remotes/origin/feature/XXX-11313
remotes/origin/feature/XXX-7534
remotes/origin/master
解决方案
git 被设计成完全去中心化的,并且可以在没有始终在线的互联网连接的情况下使用,因此实际上很少有命令与远程服务器联系。
在不联系 Bitbucket 服务器的情况下,git 无法知道哪些分支实际上仍然存在。那么您看到的分支名称是什么,当您询问时哪些分支名称被“修剪”了?
如果您查看手册中的描述git remote prune
,您会看到:
默认情况下,<name> 下过时的远程跟踪分支被删除
这里的基本情况是,当您从远程服务器获取数据时,git 会以“远程跟踪分支”的形式缓存这些数据。这些行为有点像普通分支,但实际上只是一个标记,表示“上次我们与远程服务器交谈时,有一个具有此名称和此提示提交的分支”。
这些指针与您可能使用相同名称创建的本地分支完全分开:您可能有一个本地“master”,一个“origin/master”指的是一个远程服务器,一个“joebloggs/master”指的是不同的远程服务器服务器。同时,实际的远程服务器可能在 master 上有新的提交,或者已经完全删除了它,但是你的互联网没有插上电源,所以你无法知道。
这使您可以运行命令,例如根据您拥有的远程分支的最新缓存git diff master origin/master
将名为“master”的本地分支与远程分支“master”进行比较。
默认情况下(没有--prune
选项),运行git fetch
将创建和更新这些指针,但永远不会删除它们 - 如果远程服务器上没有该名称的分支,则本地指针将留在最后一次看到的地方。这些是手册正在谈论的“陈旧的远程跟踪分支”:曾经存在于远程服务器上但不再存在的东西的缓存。
推荐阅读
- php - WooCommerce 搜索多个订单
- underscore.js - 如何在 Angular 9 项目中使用 underscore.js
- java - Java中的矩阵转置(在ArrayList中存储矩阵)
- python - 如何在空白处放置none或null?
- javascript - Antd - redux 中的表保存排序
- android - Android 隐藏自己的应用程序图标在某些 android 10 设备中不起作用
- r - R:以扩展方式重新排列数据框中的列
- docker - 当某个 docker 容器中未执行 cron 作业时,如何调试?
- mongodb - 如何使用聚合结果作为查找查询的输入?
- python - 准确匹配句子 4 次