[英]How to reset remote master back to a commit which has not been merged with another branch in git
[英]Git Hook: How to tell if tagged commit has been merged to master
我正在尝试编写git挂钩,以便在推送时部署Web应用程序。
我从源克隆了一个裸仓库,并编写了一个预接收钩子来执行某些规则。
规则之一是仅应部署带注释的标签,并且所有更改都必须已合并到主服务器中。
为了执行第二条规则,我尝试使用后接收和
git branch --contains <tag_name>
以便查看master是否在列表中。
当我在原籍上这样做时,我得到
master
* testbranch
但是当我在部署服务器上的裸仓库中运行相同的命令时,我只会得到
* (detached from e5f1fa4)
我是否缺少某些东西,或者这种方法根本不能在裸仓库中使用?
如果是这样,是否还有其他方法可以验证标签的提交是否已经合并到master中?
首先,执行git show <tag_name>
并复制该提交的哈希。
然后,只需使用grep git log
获取该哈希值:
git log master | grep <hash>
如果未返回任何输出,则该哈希值尚未合并到master分支。 否则,哈希将从grep输出,表明它已被合并。
要在一个命令中完成所有操作:
git log master | grep "`git show <tag_name> | grep commit`"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.