我可以克隆标记,并让Git允许我在其中进行提交,但我无法使用git-push将任何内容推送回去。通过检查git-log,提交已经存在,但git-st告诉我,我当前没有处于任何分支上。
那么,互联网上,如何向旧的git标记提交代码?
如果有人在搜索“替换git标签”或类似内容后来到这里,我推荐以下方法:
git tag -d <tagname>
git checkout <new commit or branch>
git tag -a <tagname>
git push <remotename> <tagname> -f
例如:
git checkout 2.0
git tag -d v2.0
git tag -a v2.0 -m"Version 2.0"
git push origin v2.0 -f
希望这能帮助到某个人。
标签不可移动。一旦你创建了一个指向特定提交的标签,就无法更改该标签。
听起来你打算创建一个分支而不是标签。你应该创建一个新分支 (git branch 分支名 && git checkout 分支名
),以确保不会丢失你的提交。然后将该分支推送到仓库,并让你的发布/修复开发人员在该分支上进行工作。
git tag -f
),但这并不推荐。仅当标签尚未部署时,才会覆盖标签。git tag -f <旧标签名称>
git push -f --tags
总共 0 个文件被更改(增加或删除)(delta 0),其中复用了 0 个文件(delta 0)。
+ ... <旧标签名称>
-> <旧标签名称>
(强制更新)如果我正确地理解了你的问题,你需要创建一个支线来存储你的提交。为此,请检出你想要推送的版本。在你的 Git Bash 中输入:
git branch old-version
这应该在您的提交位置创建一个名为old-version
的分支。然后尝试推送。
你应该在标签的位置创建一个新分支,删除标签,进行提交,重新创建标签并推送。
这里有很多事情正在进行。
听起来你对 git tag 的目的没有足够的了解。我建议你阅读一下 man page,以及 Pro Git 的 relevant section。Pro Git 也是一个很好的介绍工具的入门指南,还有 Git Magic。
正如其他人指出的那样,你可能已经创建了一个分支,并在其上提交了代码,只是错误地将其标识为标签,或者你实际上创建了一个标签,并在分支之外提交了新的代码,这非常令人困惑。如果你还不知道如何使用它,你肯定需要阅读一下 git branch。
听起来你和你的团队需要一个支持多个发布、维护和开发流的工作流程,我谦虚地建议你阅读 Vincent Driessen 的这篇 most excellent guide。我在我的上一家雇主向我的团队介绍了这个方法,它改变了我们的工作方式。阅读这篇文章应该会让你非常好地了解 git 如何最好地支持你的团队已经尝试过的工作方式。
没有直接提交到旧标签的方法。正如其他人指出的那样,标签只是特定提交的名称。然而,我有一些想法可能对你有帮助。
你可以通过 git checkout -b my-new-branch name-of-tag
基于标签检出一个分支。这将为你提供一个全新的基于该标签的分支,你可以在其中提交代码。共享该分支就像将其推送到公共触点并让其他人拉取它一样简单。
如果你想要一个移动的标签,你正在做一些“疯狂”的事情(至少在 git tag 的 man page 的作者看来是这样)。他们部分正确,因为移动标签实际上只是分支头,因此可以简单地成为一个分支。标签不应该成为这个故事的一部分。但是,如果你真的想要一个移动的标签,你可以通过跳过几个火圈,并按照 git tag
man page 中的 Re-Tagging Section 中的说明进行跳跃,从而实现这一目标。