我需要进行一些历史重写,现在希望保留原始树。但是重写后的树应该复制之前使用的标签。除了在标签名前加上分支名称之外,是否有其他不那么手动的选项可供选择?
我需要进行一些历史重写,现在希望保留原始树。但是重写后的树应该复制之前使用的标签。除了在标签名前加上分支名称之外,是否有其他不那么手动的选项可供选择?
devel
和master
分支以及v1.0
和v2.0
标签,则引用看起来应该像这样:master
和devel
分支中。通过查看你的.git
存储库,你可以看到标签实际上没有更多的结构;它只是一个包含SHA-1引用.git/refs
内提交的文件,或者是.git/packed-refs
中的一行(标签通常在packed-refs
中,因为它们不经常更改,而分支通常是git/refs
内的单独文件)。git filter-branch --tag-name-filter
来完成这个任务。您可以将标签命名空间化为一个以您想要的分支命名的目录(有点像),而且这不必是手动的:
git-thisBranch() { git symbolic-ref --short HEAD; }
git-localTag() {
local name="$1"; shift;
git tag $(git-thisBranch)/"$name" "$@";
}