将master分支设置为最新标记

Pet*_*ter 6 tags git push master head

这是我的git repo现在如何的一个例子:

v1.0    v1.1    v1.2
  |       |       |
  a   -   b   -   c
  |               |
master           HEAD
Run Code Online (Sandbox Code Playgroud)

我通常像这样提交,标记和推送标签:

git commit -a -m "Commit msg"
git tag -a v1.3 -m "Tag msg"
git push --tags
Run Code Online (Sandbox Code Playgroud)

我遇到的主要问题是master分支没有移动到最新的标签,所以我总是处于Detached HEAD状态.有没有办法解决这个问题,以便主分支始终指向最新的推送标签?

Pet*_*ter 8

在这种特殊情况下,我必须做以下事情:

1)首先将主分支设置为指向最新标记(HEAD指向的位置),因为它是最新的标记.为此,我创建了一个新分支并将master合并到它.

git branch -b exp
git merge -s ours master
git checkout master
git merge exp
Run Code Online (Sandbox Code Playgroud)

现在master与最新标记相同:

v1.0    v1.1    v1.2
  |       |       |
  a   -   b   -   c
                  |
                 HEAD
                  |
                master
Run Code Online (Sandbox Code Playgroud)

2)一旦我们回到原位,我们需要在执行新提交时同时推送master和tags:

git commit -a -m "Commit msg"
git tag -a v1.4 -m "Tag msg"
git push master --tags
Run Code Online (Sandbox Code Playgroud)

这样我们就可以避免处于Detached HEAD模式并更新master分支.

  • `git checkout -B master HEAD`直接执行你的第1步. (2认同)