我有一些历史重写要做,为此我想暂时保持我原来的树完好无损。然而,重写的树也应该复制以前使用的标签。有没有比例如更少的手动选项在标签名称前面添加分支名称?
不,git 中没有像每个分支标签那样的东西。所有分支和标签都只是 Git 中的引用; ref 只是指向修订历史记录中特定修订的名称。例如,如果您有devel
and master
分支机构,以及v1.0
and v2.0
标签,参考文献看起来像这样:
refs/heads/devel -> *
/ \
* * <- refs/heads/master
| |
* *
\ /
* <- refs/tags/v2.0
|
*
|
* <- refs/tags/v1.0
|
*
正如您所看到的,没有任何东西将这些标签绑定到任何分支;事实上,所有这些标签都包含在master
and devel
分支机构。通过观察你的内心.git
repo,你可以看到标签实际上没有比这更多的结构了;它只是一个包含 SHA-1 的文件,引用了其中的提交.git/refs
,或一行.git/packed-refs
(标签经常位于packed-refs
因为它们不会经常更改,而分支通常是内部的单独文件git/refs
).
因此,如果您想重写历史记录并保留旧标签,则必须重写标签名称。正如 sehe 指出的,这是使用git filter-branch --tag-name-filter http://git-scm.com/docs/git-filter-branch.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)