"git checkout tag-name" 和 "git reset --hard tag-name" 的区别

21
我知道有像这样的问题,但那不是我想问的。
我也知道: git checkout tag-name
- 使您与分支分离。(即移动HEAD指针,保留BRANCH指针) git reset --hard tag-name
- 不会使您与分支分离,但会使以前的提交变为“悬挂”。(即移动HEADBRANCH指针)
我想知道哪个更适合更新标签,即生产环境应该重置还是检出。我知道垃圾收集器可能会运行,删除悬挂提交,但再次说一遍,如果在更新标签的过程中始终“拉取”生产环境,我在那里看不到任何坏处。
考虑到始终在此更新调用之前执行pull,生产环境应该使用reset还是checkout更新到标签?
1个回答

18

我想知道将更新应用到标签时哪种方式更合理。

你的生产应用应该检出一个标签。

可以这样理解:你的生产应用是只读的。git reset --hard tag-name会修改当前检出的分支。

另外一种方法:

通常的做法是,在创建标签的同时,你还有一个分支,它就是最新的版本。在这种情况下,你需要将它合并到主分支上并从那里创建一个标签;然后在生产应用中,只需使用 git pull(在主分支上)来更新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接