git - 如何 git reset --hard并删除所有本地不相关的标签?
问题描述
假设我克隆了一个 repo 并且标签是
- v1.0
- v2.0
- v3.0
- v4.0(最新提交)
现在我做一个
git reset --hard v2.0
当然,最新的提交现在是 v2.0 并且代码已重置。但是当我给 a 时git tag
,我仍然会得到
- v1.0
- v2.0
- v3.0
- v4.0
如何将 git 重置为 v2.0,以便将来的标签 v3.0 和 v4.0 也从本地删除?
这个的用例是什么?- 我必须计算当前标签和前一个标签。
上一个标签
echo $(git describe --abbrev=0 --tags `git rev-list --tags --skip=0 --max-count=2` | cut -c2- | sed '2q;d')
当前标签
echo $(git describe --abbrev=0 --tags `git rev-list --tags --skip=0 --max-count=2` | cut -c2- | sed '1q;d')
解决方案
git reset
将移动 HEAD,并且与现有标签无关。
您需要删除标签git tag -d
你可以:
- 列出标签(git tag -l)
- 列出分支包含的标签(
git tag --merged <branch>
)
第一个列表中的任何标签,但不是第二个列表中的任何标签都需要删除。
推荐阅读
- python - 如何在python中使用循环读取/计算数据?
- amazon-web-services - 更改了我的云形成 IAM 组名称,但旧的 IAM 组不会被删除
- java - 如何解决这种非法的表达开头?
- angular - 我可以将单个 EntityAdapter 用于同一 EntityState 的几个实例吗?
- python - 如何使用 flask.redirect 发送 POST 请求?
- c++ - 基于范围的自定义迭代器:常量问题
- mysql - 可以将另一个表作为表中的一行引用吗?
- c++ - 重载小于 (<) 运算符,用于以多种方式对对象进行排序
- git - 恢复单个 Gitlab 存储库
- angular - 是否可以在 Angular 7 中使用 observable 进行更新?