泰安网站建设排行,住房和城乡建设部网站职责,会展网站建设,12306 网站开发1. 问题背景
项目中之前一个tag#xff08;v1.0#xff09;打错了#xff0c;想删除它#xff0c;但我们从此tag v1.0中迁出新建分支Branch_v1.0,在此分支下修复了bug#xff0c;想重新打一个tag v1.0#xff0c;原来的tag v1.0可以删除掉吗#xff1f;
错误的理解v1.0打错了想删除它但我们从此tag v1.0中迁出新建分支Branch_v1.0,在此分支下修复了bug想重新打一个tag v1.0原来的tag v1.0可以删除掉吗
错误的理解按我之前的理解Branch_v1.0是从原来的tag v1.0中迁出对tag v1.0有引用而新打的tag又是基于Branch_v1.0对Branch_v1.0存在引用从而Branch_v1.0不可以删除自然而然原来的tag v1.0也不能删除。所以新打的tag只能换一个名字。
2. 解决方法 本地建了个git仓库模拟这种情况下图展示的就是一上问题背景中描述的场景tag v1.0为错误标签master分支已经离开tag1.0的位置有新的提交此时发现v1.0有问题所以从tag v1.0中迁出并创建新分支Branch_v1.0修复了问题然后新建tag v1.0.0经过查看git文档可知原来的tag1.0假设没有推送的远程是可以直接删除掉然后新的tag就取名v1.0没问题或直接在新建tag时直接用选项强制覆盖名称v1.0。但是若tag已推送到远程其他人已经获取到了这样删除就不太明智了除非你删除后通知其他人将本地仓库重新git clone 此时可以删除Branch_v1.0吗删除后,tag v1.0.0还能用吗 图标说明下红色表示当前工作分支绿色表示各个分支的最后一次提交黄色表示tag绿色黄色表示在绿色下面打的标签并在同一位置三个颜色在一起类比即可 TortoiseGit中没找到删除分支的菜单直接用命令操作。删除后发现新建的tag v1.0.0没有影响都还在。 继续操作删除tag v1.0 然后看下仓库图发现v1.0.0此时不再从tag v1.0流出tag v1.0已被我删除而是从 24dd6155 中流出 这个24dd6155就是tag v1.0引用的git提交id号从删除tag的命令行可知tag v1.0引用的就是24dd6155。
综上所述可以得出结论tag, branch引用的是提交idgit每一次提交都会生成一个唯一id不是某个tag或branch, 删除tag或branch不用对git的提交数据产生影响
有了这个认识针对以上问题就有了相应的解决方案了即原来的tag1.0假设没有推送的远程是可以直接删除掉然后新的tag就取名v1.0没问题或直接在新建tag时直接用选项强制覆盖名称v1.0。但是若tag已推送到远程其他人已经获取到了这样删除就不太明智了除非你删除后通知其他人将本地仓库重新git clone。