【发布时间】:2021-01-12 11:01:56
【问题描述】:
我正在尝试将 svn 存储库转换为 git 存储库。因此,我遵循了之前SO question 的第二个(最受好评的)答案。我只是通过将 svn 标签转换为 git 标签并创建了带注释的标签,而不是轻量级标签,如下所示:
git checkout -b tag_v1 remotes/tags/v1
git checkout master
git tag -a v1 tag_v1 -m "release"
git branch -D tag_v1
我转换repo后,尝试描述git标签,如下:
git describe
但是,我只收到以下错误消息:
fatal: No tags can describe <SHA>
此外,当我尝试查看从与标签相关的提交到当前 HEAD 的祖先路径时,
git rev-list --ancestry-path <SHA RELATED TO TAG>..<SHA RELATED TO HEAD>
我收到一个空响应。根据this SO question 接受的答案,我确保获取所有远程分支。作为对第二个(最受好评的答案)的回应,我还确保每个标签都与提交消息相关联。 Git show针对特定标签显示:
tag A
Tagger: foo
Date: bar
release
commit d1c276a83a4e21dc26e019905db9a237e1366013 (tag: A)
Author: baz
Date: bazbaz
Created a tag for version 2.8.0
有人知道为什么git describe 总是返回错误消息吗?我很感激任何提示或建议!
【问题讨论】:
-
请注意,latest 版本(Git 分支上由 SVN 主干转换产生的最后一次提交)的标记只能描述最新 版本,而不是任何早期版本。但是如果你有旧版本的标签,例如,对于转换为 Git 提交的第一个 SVN 提交,这些标签应该能够描述任何以后的 Git 提交。所以我不确定你为什么会收到这个错误。如果您使用
git tag -l列出所有标签,哪些标签会针对哪些版本显示?
标签: git svn version-control