有没有办法判断合并操作是否与拉取操作相关联?
我想使用 git-flow 的合并操作作为钩子来将我的数据发送到 Heroku。有什么想法吗?
UPSTREAM=$(git rev-parse --symbolic-full-name @{u})
这将给出代表您当前分支上游的远程跟踪分支 - 在后合并挂钩中,您当前的分支就是您刚刚合并的分支。(这个好命令来自于 Kevin Ballard 在 this answer 的评论中。) 您可以使用以下命令找到该提交的对象名称(SHA1sum):
UPSTREAM_OBJECT_NAME=$(git rev-parse --verify $UPSTREAM)
然后您想找出该提交是否是HEAD的父提交之一 - 您可以使用以下命令获取父提交:
HEAD_PARENTS=$(git log -n 1 --pretty=format:"%P")
...所以可以使用以下代码测试上游是否是其中一个父级:
git log -n 1 --pretty=format:"%P" | grep -q $UPSTREAM_OBJECT_NAME
git reflog show -n 1 $UPSTREAM
... 包含 pull : fast-forward
。
这应该为您提供所需的部分,以便编写您想要的post-merge
脚本。 但是,再次强调,我真的不希望这样做 ;)
development
分支上运行git pull origin master
,它会部署一个从master
合并的版本到staging服务器,这让你感到担忧? - Mark Longair