git: checkout 一个标签,修改一些东西,然后再次标记它

标签 git github tags

我觉得我应该知道这一点,但我越来越困惑了。

我在 github 上创建了一个仓库。我需要的是 checkout 一个标签(称为“v1.0.5”),修改文件上的语句,用一个名为“1.0.5”(不带“v”)的新标签重新标记该状态,然后执行对 master 进行相同的更改。

让我更清楚一点。我正在将 EightMedia 的 Hammer.js 从命名的 AMD 模块更改为匿名模块。

我唯一需要更改的文件是 src/outro.js。文件从标记 v1.0.5 到 HEAD没有变化

我要改变

// requireJS module definition
if(typeof window.define === 'function' && window.define.amd) {
    window.define('hammer', [], function() {
        return Hammer;
    });
}

// requireJS module definition
if(typeof window.define === 'function' && window.define.amd) {
    window.define(function() {
        return Hammer;
    });
}

我想要的是: checkout v1.0.5,更改该文件,并以我有一个包含 exact 的标签 1.0.5 的方式推送 repo v1.0.5 的内容,加上更改。标签必须推送到远程。

然后,checkout master,再次更改文件,再次推送给master。

checkout v1.0.5 时我完全迷路了,我进入了分离的 HEAD 状态。提交后,我将修改推送到哪里?我如何标记它们并将标记推送到远程?

最佳答案

首先,使用原始标签 checkout :

git checkout v1.0.5

这将使您处于分离的 HEAD 状态 - 您的提交不会具体到任何分支。这听起来像你想要的!

现在,进行更改、暂存并提交。

git commit -a -m "Commit message"

您仍处于分离的 HEAD 状态,但您处于新的提交状态 - 具有您想要的更改和历史记录的提交。所以标记它!

git tag 1.0.5

推回远程(假设你的仍然命名为 origin):

git push origin 1.0.5

这将推送标签本身 (1.0.5) 以及它指向的所有必要的提交历史。

请注意,您的更改不会包含在除此标记之外的任何地方。。根据你的问题,我认为这就是你想要的,但如果你确实需要 merge 回 master,你可以按照:

git checkout master
git merge 1.0.5

关于git: checkout 一个标签,修改一些东西,然后再次标记它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16324143/

相关文章:

git - 无法下载和安装go项目

GitLab SSL Read error, decryption failed or bad record mac

eclipse - 我是否以正确的方式在 Eclipse 中使用 Git?

svn - 如何从主干正确创建 SVN 标签?

Gitlab apt 存储库非常慢

git - 在 bash 中获取 git 状态的最快方法

emacs - 有什么方法可以扩展组织模式标签以包含 "-"之类的字符?

java - 如何在JSP中out.print() HTML属性?

github - 是否可以同时满足 Github 和 Doxygen 的方式编写 Markdown 链接?

Git:具有特定文件夹内容的分支在每个 repo 中保持不同(不考虑 merge )