我怎样才能提交一个旧的git标签?

Jon*_*ach 15 git github git-svn

因此,两个月前,我将我们在SVN中的代码库迁移到了Git,并提供了完整的变更集历史记录.紧接着,我们标记了一个新版本并继续工作.因此,虽然我们继续使用新标签,但有些人继续修复SVN中旧标签中的错误,现在我想将所有这些更改都添加到Git中的标签中.

我可以克隆标签并让Git让我提交它,但是我不能用git-push推回任何东西.检查git-log,提交就在那里,但git-st告诉我,我目前不在任何分支上.

所以互联网,我怎么能承诺一个旧的git标签?

too*_*keh 66

如果有人在搜索"替换git标签"或类似内容后来到这里,我推荐以下方法:

git tag -d <tagname>
git checkout <new commit or branch>
git tag -a <tagname>
git push <remotename> <tagname> -f
Run Code Online (Sandbox Code Playgroud)

例如:

git checkout 2.0
git tag -d v2.0
git tag -a v2.0 -m"Version 2.0"
git push origin v2.0 -f
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人.


cdh*_*wie 11

标签不可移动.一旦创建了指向特定提交的标记,您就无法在以后更改该标记.

听起来你打算创建一个分支.您应该创建一个新的分支(git branch branchname && git checkout branchname)以确保不会丢失您的提交.然后将该分支推送到存储库,让您的发布/错误修复开发人员在该分支中工作以进行发布.

  • 哦,放弃他们我只是忘了他们......你真的在没有他们的情况下重建SVN的回购吗? (2认同)

Vic*_*Vic 8

你的意思是分支,而不是标记.Git中的标签是主分支中的时间点书签.虽然您可以覆盖标记(git tag -f),但不建议这样做.如果标签尚未部署,我将仅覆盖标签.


Kau*_*aji 8

如果用户正在使用用户创建旧标记的相同分支,则首先创建新的更改列表.否则签出标签,然后创建新的更改列表.然后使用以下步骤使用新的更改列表编号更新现有标记

git tag -f <old tag name>

git push -f --tags

总计0(delta 0),重用0(delta 0)+ ... <old tag name>- > <old tag name>(强制更新)