将master分支设置为最新标记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将master分支设置为最新标记相关的知识,希望对你有一定的参考价值。
这是我的git repo现在如何的一个例子:
v1.0 v1.1 v1.2 | | | a - b - c | | master HEAD
我通常像这样提交,标记和推送标签:
git commit -a -m "Commit msg"
git tag -a v1.3 -m "Tag msg"
git push --tags
我遇到的主要问题是master分支没有移动到最新的标签,所以我总是处于Detached HEAD状态。有没有办法解决这个问题,以便主分支始终指向最新的推送标签?
在这种特殊情况下,我必须做以下事情:
1)首先将主分支设置为指向最新标记(HEAD指向的位置),因为它是最新的标记。为此,我创建了一个新分支并将master合并到它。
git branch -b exp
git merge -s ours master
git checkout master
git merge exp
现在master与最新标记相同:
v1.0 v1.1 v1.2
| | |
a - b - c
|
HEAD
|
master
2)一旦我们回到原位,我们需要在执行新提交时同时推送master和tags:
git commit -a -m "Commit msg"
git tag -a v1.4 -m "Tag msg"
git push master --tags
这样我们就可以避免处于Detached HEAD模式并更新master分支。
已经给出了关于为什么不以这种方式做事的各种答案/评论,但是这里是你如何修复这个特定场景:
git checkout -b tmpbranch # creates a branch called tmpbranch at HEAD
git checkout master # switch back to master branch
git merge --ff-only tmpbranch # fast-forward merge master to tmpbranch, fail if not possible
git branch -d tmpbranch # delete tmpbranch, it's not needed anymore
然后,继续,不要检查标签,除非这样:
git checkout -b somebranch refs/tags/tagname # creates a new branch starting at tag
这样,您将不会处于分离的HEAD状态,并且将从相关标签开始添加任何新提交,这似乎是您想要的...在做出提交后,您可以在git tag newtag
创建右侧的其他标签点。
分支不引用标记。 标记引用固定提交。
所以,只要你git checkout master
,你不是在detached HEAD mode。
然后,您可以提交并标记:标记将在当前分支的LATEST上创建。
如果您处于分离的HEAD模式,请参阅“Git: How can I reconcile detached HEAD
with master/origin
?”以了解将分离提交与分支进行协调的各种方法。
标签用于创建稳定版本。要创建一个与Git Drupal Repository一起使用的标记,首先,如果您使用此标记进行发布,请确保遵循标记命名约定。从项目目录中,一个例子是:
git tag 7.x-1.0
创建标记后,您需要将标记推送到主存储库。就其本身而言,push不会发送标签,您还需要通过附加--tags标志告诉它在推送中包含标签:
git push --tags
如果您不想推送所有标签,也可以是特定的:示例:
git push origin tag 7.x-1.0
要检查并确认远程标签,命令是: -
git tag -l
以上是关于将master分支设置为最新标记的主要内容,如果未能解决你的问题,请参考以下文章
GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段