将Gitflow用于拉取请求的正确方法

vawmfj5a  于 2023-01-15  发布在  Git
关注(0)|答案(2)|浏览(143)

我想在我的团队中采用git-flow工具。
问题是“git flow feature finish”会在本地合并分支,而我想创建一个拉取请求,这样合并就会发生在源节点。
那么,在同时处理拉式请求的团队中,使用git-flow工具的正确方法是什么呢?
试着在谷歌上搜索,但找不到有意义的东西。

omhiaaxx

omhiaaxx1#

你可以直接使用git flow feature publish <name>,这会将你的特性分支发布到你的源节点(比如Bitbucket),然后你可以在那里创建pull请求并将其合并到develop中,完成后,你需要手动删除本地特性分支。
唯一不能使用的命令是git flow feature finish <name>,这个命令相当好用,你仍然可以使用大多数git流助手。
发布版本也是如此。我发现这篇文章很有帮助:https://blog.axosoft.com/pull-requests-gitflow/
以及https://community.atlassian.com/t5/Bitbucket-questions/git-flow-feature-finish-and-pull-request/qaq-p/347877
希望这能有一点帮助。这个问题没有一个完美的解决方案。

l2osamch

l2osamch2#

这个问题有一个很好的解决方案,但它确实需要一个自定义脚本,因为PRAPI对每个平台都是唯一的。
AVH版本的git-flow有一些额外的特性:https://github.com/petervanderdoes/gitflow-avh
它支持钩子(自定义脚本):https://github.com/petervanderdoes/gitflow-avh/wiki/Reference:-Hooks-and-Filters#hooks
您可以使用以下方法在Mac上切换到AVH版本:

brew uninstall git-flow
brew install git-flow-avh

要在git flow中支持拉取请求,您可以添加一个脚本:

.git/hooks/post-flow-feature-publish.sh

post-flow-feature-publish.sh脚本输出url示例:

#!/bin/sh

branch=$(git rev-parse --abbrev-ref HEAD)
userRepo=$(git remote -v | grep fetch | awk '{print $2}' | grep "github.com" | cut -d':' -f2 | rev | cut -c5- | rev)

if [ -n "$userRepo" ]
then
    echo ""
    echo "Create PR at: https://github.com/$userRepo/compare/$branch?expand=1"
    echo ""
fi

或者如果使用GitHub CLI,您可以调用:gh pr createhttps://cli.github.com/manual/gh_pr_create
现在运行命令时:

git flow feature my-feature publish

Git flow会将代码推送到特性分支,并调用钩子脚本来创建PR。

相关问题