“git checkout tag-name”vs“git reset --hard tag-name”

时间:2012-05-25 08:44:35

标签: git

我知道有this之类的问题,但这不是我要问的问题。

我也知道:

git checkout tag-name

  • 将您从分支机构中分离出来。 (即移动HEAD指针,保持BRANCH指针)

git reset --hard tag-name

  • 不会将您从分支机构中分离出来,但会使之前的承诺变为“悬空”。 (即移动HEADBRANCH指针)

我想知道哪一个对更新标签更有意义,即应该重置或检出生产。我知道垃圾收集器可以运行,删除悬空提交,但是如果在更新到标签的过程之前总是“拉”生产,那么我认为没有什么不好的。

考虑到在此次更新通话之前始终完成reset,生产是否应更新为包含checkoutpull的代码?

1 个答案:

答案 0 :(得分:14)

  

我想知道哪一个更适合更新标签

您的生产安装应该检查标签。

以这种方式思考:您的生产安装是只读的。 git reset --hard tag-name将修改当前签出的分支。

<强>替代地

通常的做法是,除了创建标记之外,还有一个分支,它只是最新版本。在这种情况下你会...合并到掌握并从那里创建一个标签;在您的生产安装中,您只需使用git pull(在主服务器上)进行更新。